我有一个应用程序,我使用" Java Web start"启动。该应用用于启动其他Java应用程序。问题是,使用命令" Java -cp class_path class_name" java应用程序无法启动,异常"找不到或加载main 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();
}
如果使用普通应用程序运行,classPath是:/d:/wworkdir/applications/firstapp.jar ;/d:/workdir/applications/secondapp.jar; jar; jar; jar ;/dworkdir/applications/thirdapp。jar;
使用Java WebStart运行classPath是:/applications/firstapp.jar ;/applications/secondapp.jar ;/applications/thirdapp.jar。
P.S。我尝试使用system.getProperty(" java.class.path"(,它没有帮助。
问题是您尝试加载的类没有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