我是 Java 新手,我不确定我的问题标题是否恰当。请建议任何更好的标题。
我有一个 Java API,它有许多可执行模块,这些模块执行与解析 MS Outlook.pst文件相关的各种事情。我的问题是,当我运行execute命令来执行.classAPI( java -classpath /opt/Java/libs/JPST/lib/jpst.jar /opt/Java/libs/JPST/examples/GetInboxMessages/bin/Example) 的一个模块的文件时,我遇到了这个异常-
Exception in thread "main" java.lang.NoClassDefFoundError: /opt/Java/libs/JPST/examples/GetInboxMessages/bin/Example
Caused by: java.lang.ClassNotFoundException: .opt.Java.libs.JPST.examples.GetInboxMessages.bin.Example
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: /opt/Java/libs/JPST/examples/GetInboxMessages/bin/Example. Program will exit.
到目前为止......
您可以检查我之前的问题,我认为我正确运行了compileandexecute命令。但我仍然得到上述'异常。
我询问了 API 的开发人员,他说我应该获得 Eclipse 或 Netbeans IDE。他说,
examplesAPI 文件夹结构中的文件夹是整个 Eclipse 工作区。
并且还说
编译和运行所有示例更容易。
现在......
所以,我已经为 Java 设置了 Eclipse Helios。谁能告诉我如何使用 IDE 轻松编译和运行所有示例(我认为是示例文件夹中的模块)。我之前曾为 PHP 使用过 Eclipse,但从未使用过 Java。
API 的文件夹结构
我需要执行.class其中一个模块的文件(许多模块文件夹都存在于示例中directory)。API 的示例文件夹中有许多这样的模块。这些模块文件夹中的每一个都包含一个bin文件夹(包含.class文件)和src文件夹(包含.java文件)。我需要执行一个这样的.class文件。
有一个lib包含.jar文件的目录(我的目标文件需要引用它.class)。该lib目录与目录处于同一级别examples。
解决方案
我已经验证了 Jonathan 给出的解决方案有效(仅在没有使用省略的情况下验证)。为了更清楚,classpath需要在编译和执行命令中包含所有类位置。因此,如果您需要编译和执行Example.java具有依赖关系的文件,Parent.jar请执行以下操作:-
编译
javac -classpath /path/to/Parent.jar/file/Parent.jar:/path/to/Example.java/file/ Example.java
执行
java -classpath /path/to/Parent.jar/file/Parent.jar:/path/to/Example.class/file Example
并注意分隔符 - 应该:适用于 linux 和;windows。
谢谢,
桑迪潘