2016-03-30 35 views

cevap

2

: uygulamayı çalıştırmak için . Bu noktadan sadece kabuk oyunları. Bu OS X üzerinde çalışır:

java $(javap -c File.class | head -n 2 | tail -n1 | cut -f3 -d\) 

Not alt kabukta \ sonra uzay - budur sınıf adını izole etmek gerekir.

Güncelleme @ nikolay-vyahhi görüşleri doğrultusunda: sınıf ismi (o sınıf kamu olup olmadığını bilinmeyen olduğunda örneğin), kullanabileceğiniz tr ve grep gibi görünecektir hangi konumda olduğundan emin değilseniz öyleyse:

java $(javap -c File.class | head -n2| tail -n1 | tr [:space:] \\n | grep -A1 "class\|interface" | tail -n1) 
+0

Teşekkürler! Benim durumumda, javap'dan sonraki ikinci satır, "Gizli" sınıfının sırrıdır, yani "public class Secret" değil, bu yüzden "cut -f3 -d" komutu sadece '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' verir. Her iki vakayı da aynı "cut" argümanlarıyla desteklemenin mümkün olup olmadığından emin değil. –

+0

İyi nokta. Teşekkürler. Cevabımı güncelledim. –

+0

Teşekkürler! Ama yine de sadece "Sınıf Sırrı" için çalışmıyor - sınıf adına bir nokta yok. Ayrıca, javap -c java.lang.String | kafa -n2 | kuyruk -n1 | tr [: alan:] \\ n | grep \\. * dört (!) satırı verir, çünkü sınıflar diğer sınıfları 'uygular' ve 'genişletir' ve imzasındadır. –

0

Bunu geride kalan javap kullanabilirsiniz:

javap X.class 

Bu sınıf sökmek ve korumalı, paketin çıktısını ve kamu alanları ve yöntemler olacaktır:

Compiled from "Test.java" 
public class Test { 
    public Test(); 
    public static void main(java.lang.String...); 
} 

Sonra bu kullanabilirsiniz Sen javap -c <filename> kullanarak sınıfının adını alabilirsiniz

java $(javap X.class | sed -n 's/.*class \(.*\) {/\1/p') 
İlgili konular