Java Web Start命令不起作用(java -cp class_path class_name)

时间:2018-03-28 14:19:34

标签: java classpath classnotfoundexception java-web-start

我有应用程序,我使用“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”),它没有帮助。

1 个答案:

答案 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