安裝最新版本的Vuze(Azureus的)後,我得到了一個奇怪的錯誤嘗試啓動它:奇的NoClassDefFoundError
> java -Xmx128m -classpath ./Azureus2.jar:./swt.jar -Djava.library.path=/bt_work/vuze -Dazureus.install.path=/bt_work/vuze -Dazureus.script=./azureus -Dazureus.script.version=2 org.gudy.azureus2.ui.swt.Main
Exception in thread "main" java.lang.NoClassDefFoundError: org/gudy/azureus2/ui/swt/Main
Caused by: java.lang.ClassNotFoundException: org.gudy.azureus2.ui.swt.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
有什麼奇怪的是這樣的:
> javap -classpath ./Azureus2.jar:./swt.jar org.gudy.azureus2.ui.swt.Main
Compiled from "Main.java"
public class org.gudy.azureus2.ui.swt.Main extends java.lang.Object{
public static final java.lang.String PR_MULTI_INSTANCE;
...
所以...運行帶有相同類路徑的javap
找到該類,但僅有java
不能。 WTF正在進行?
我檢查了兩個程序來自同一個安裝Java(/usr/lib64/jvm/java-1.6.0-sun
),這是Java 6,並且這些類是爲Java 5編譯的。清單沒有簽名。 JAR文件是可讀的(unzip -t
報告沒有錯誤)。