【发布时间】:2018-03-28 14:19:34
【问题描述】:
我有应用程序,我使用“Java Web Start”启动它。此应用程序用于启动其他 Java 应用程序。问题是使用命令“java -cp class_path class_name”无法启动java应用程序,出现异常“Could not find or load main class class_name”。
但是,Class.forName(class_name) 不会抛出异常:“ClassNotFoundException”,我可以从另一个 jar 运行静态方法(但它在当前 JVM 中)。
不使用“Java Web Start”一切正常。
当我启动通用应用程序时,我使用命令:java -cp *; com.vitaxa.voidbox.MainApp。这样我就形成了类路径,收集了当前目录中的所有内容。
然后我可以启动其他应用程序,使用命令:java -cp current_classpath class_name。所以一切正常,但没有使用 Java WebStart。
有区别。为了获取 classPath,我使用了下一个方法:
private static String getClasspath() {
final StringBuilder sb = new StringBuilder();
ClassLoader classLoader = TaskRunner.class.getClassLoader();
if (classLoader == null) {
classLoader = ClassLoader.getSystemClassLoader();
}
final URL[] urls = ((URLClassLoader) classLoader).getURLs();
for (URL url : urls) {
sb.append(url.getFile()).append(";");
}
return sb.toString();
}
如果是普通app运行,classpath为:/D:/WorkDir/Applications/FirstApp.jar;/D:/WorkDir/Applications/SecondApp.jar;/D:/WorkDir/Applications/ThirdApp。罐子;
使用 Java WebStart 运行时,类路径为:/Applications/FirstApp.jar;/Applications/SecondApp.jar;/Applications/ThirdApp.jar。
附:我尝试使用 System.getProperty("java.class.path"),它没有帮助。
【问题讨论】:
标签: java classpath classnotfoundexception java-web-start