-3

我正在尝试使用 cmd 运行捆绑在名为 easyflow-gui.jar 的 jar 中的 java 程序:

java -classpath "." -jar easyflow-gui.jar

工作目录是包含所有相关库的目录。

我试图运行的 jar 文件的 Manifest 文件的内容是:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_32-b27 (Sun Microsystems Inc.)
Main-Class: easyflow.custom.jgraphx.editor.SchemaEditor

这次尝试的结果是:

Exception in thread "main" java.lang.NoClassDefFoundError: com/mxgraph/util/mxEventSource$mxIEventListener
Caused by: java.lang.ClassNotFoundException: com.mxgraph.util.mxEventSource$mxIEventListener
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: easyflow.custom.jgraphx.editor.SchemaEditor. Program will exit.

问题:实际上找不到哪个类: mxEventSource$mxIEventListener 或主类 easyflow.custom.jgraphx.editor.SchemaEditor ?

编辑1:我检查了文件夹并提取了罐子,发现两个类都可用(捆绑到工作目录中的相应罐子中):

$ls easyflow/custom/jgraphx/editor/SchemaEditor*
easyflow/custom/jgraphx/editor/SchemaEditor$1.class
easyflow/custom/jgraphx/editor/SchemaEditor$2.class
easyflow/custom/jgraphx/editor/SchemaEditor.class
easyflow/custom/jgraphx/editor/SchemaEditor.java
$ls com/mxgraph/util/mxEventSource*
com/mxgraph/util/mxEventSource$mxIEventListener.class
com/mxgraph/util/mxEventSource.class
4

3 回答 3

1

如果要包含 jar 文件,则不能指定"." 类路径,它必须是 jar 文件或目录的冒号分隔列表(或分号分隔,取决于操作系统)。尝试java -help获取命令行选项的描述。

另外,如果我没记错-jar并且-classpath不一起工作,那么您必须-classpath单独使用并明确指定主类。

尝试类似的东西

java -cp easyflow-gui.jar:foo.jar:bar.jar easyflow.custom.jgraphx.editor.SchemaEditor

... “其他相关库”在哪里foo.jar以及在哪里。bar.jar

于 2013-06-29T19:22:47.377 回答
0

The default classpath is the current working directory. So, if you already have the jar in your current working directory, you dont need to specify the classpath explicitly.

The following command should work

java -jar easyflow-gui.jar
于 2013-06-29T19:39:10.907 回答
0

如果您正确阅读异常,您将看到错误的原因:

Caused by: java.lang.ClassNotFoundException: com.mxgraph.util.mxEventSource$mxIEventListener

您没有在类路径中包含包含 的 jar 文件com.mxgraph.util.mxEventSource$mxIEventListener。通过快速的 Google 搜索,您将需要 jGraph 库。

我希望这有帮助。

于 2013-06-29T18:59:40.070 回答