在安装了最新版本的Vuze(Azureus)后,我在尝试启动它时遇到了一个奇怪的错误:
> 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;
...
所以用相同的类路径运行<code>javap</code>可以找到类,但<code>java</code〕单独运行不行。WTF正在进行吗?
我检查了这两个程序是否来自同一个安装Java(/usr/lib64/jvm/Java-1.6.0-sun
),即Java 6和类是为Java 5编译的。清单未签名。JAR文件是可读的(<code>unzip-t</code>报告没有错误)。