我是 Java 新手,我不确定我的问题标题是否恰当。请建议任何更好的标题。
我有一个 Java API,它有许多可执行模块,这些模块执行与解析 MS Outlook.pst
文件相关的各种事情。我的问题是,当我运行execute
命令来执行.class
API( 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.
到目前为止......
您可以检查我之前的问题,我认为我正确运行了compile
andexecute
命令。但我仍然得到上述'异常。
我询问了 API 的开发人员,他说我应该获得 Eclipse 或 Netbeans IDE。他说,
examples
API 文件夹结构中的文件夹是整个 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。
谢谢,
桑迪潘