我有应用程序,我使用“Java Web Start”启动。此应用程序用于启动其他Java应用程序。问题是,使用命令“java -cp class_path class_name”无法启动java app,会出现“无法找到或加载主类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();
}
如果使用普通应用程序运行,则类路径为:/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。
P.S。我尝试使用System.getProperty(“java.class.path”),它没有帮助。
答案 0 :(得分:0)
问题是您尝试加载的类没有public static void main(String[] args)
方法,或者不是JavaFX应用程序,在这种情况下您可能应该修改代码。另一种情况是您没有正确加载类路径。确保您尝试加载的课程包含在java -cp .;list_of_jars_including_the_jar_file_containing_your_class class_name_including_the_package information
路径中。这有望解决您的问题。一个例子:
$ java -cp .;my_main.jar;another.jar;yet_another.jar com.example.MyClass