虽然提供信息,但他们还没有足够让我发现问题的根源。我的代码不包含在JAR文件中,并且客户已请求我们不发送它。
我在Eclipse中构建了应用程序,并从那里运行良好。我已经设置了一个脚本,它将修改其中一个java文件的main
方法以进行测试。我想在修改后使用Python调用来运行应用程序。但是,当我尝试使用java
或java -cp .
调用程序时,从命令行出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: DemoAPIFunctionality
Caused by: java.lang.ClassNotFoundException: DemoAPIFunctionality
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: DemoAPIFunctionality. Program will exit.
我的项目依赖于几个不在根目录中的JAR和一个DLL文件,同样不在根目录中。我希望它与其中一个的位置有关,但我不确定,并且进展不大。这是DemoAPIFunctionality.java
:
public class DemoAPIFunctionality
{
public final static void main(String[] args)
{
DemoAPIFunctionality demo = new DemoAPIFunctionality();
如果能帮到你,我会很高兴地列出更多信息。 (不,我不是体育经纪人。)至少从命令行开始,我需要做些什么呢?
提前致谢。
答案 0 :(得分:4)
java -cp .
- 即.class
文件所在的目录,或者您创建包时的目录,com
({ {1}}等子目录驻留。org
答案 1 :(得分:3)
您没有提到您的python脚本在应用编辑后实际编译了java源文件。
Eclipse将自动编译它(内置构建器)但当然,在IDE之外,您必须先调用javac
才能执行该类。 java
无法处理源文件。
修改强>
我不知道你在java中的实际经验 - 但这就是它在命令行中的常用方法。
假设您有一个带有main方法和文件结构的java类com.example.Hello
,如
/dev/bin/com/example/Hello.class
然后您cd
转到/dev/bin
并执行java com.example.Hello
。请注意,包名称(com.example
)始终映射到文件夹结构(com/example
)。如果您执行上述命令并且java在Hello.class
文件夹中找不到./com/example
,那么它将抛出NoClassDefFoundError
。
答案 2 :(得分:3)
简便的解决方法,提示和快捷方式。
从python中调用java classname
时不要使用任何路径。
例如。 commands.getstatusoutput("java -cp $CLASSPATH clusterize")