我有一个Java类,它有一个main,我曾经作为一个独立的应用程序从命令行运行。
java -jar myjar.jar params
我需要将代码重新打包以在apache下运行,并且所有我的代码,包括旧jar的入口点类,已经在WAR文件中结束,以便容易地堕入Web服务器。
但是,我仍然希望能够从命令行运行它,代码没有改变,并且都在那里,我只是不知道如何让它运行。
这里是我试过…
我推测,WAR就像一个瓶子,所以
java -jar mywar.war params
这没有说明清单中没有定义主类。
我手动添加了一个清单的战争,并再次尝试,具有相同的效果。
我注意到,在我的战争中,我有一个名为META-INF的文件夹包含一个manifest.mf,所以我添加了一行,声明我的主类,因为我会正常的清单…
Manifest-Version: 1.0
Main-Class: mypackage.MyEntryPointClass
这给了一个noClassDefFoundError mypackage.MyEntryPointClass,这是一个排序的进度。这让我相信这只是一个路径问题,所以我试着
Manifest-Version: 1.0
Main-Class: WEB-INF.classes.mypackage.MyEntryPointClass
我现在得到相同的错误,但与堆栈跟踪…
Exception in thread "main" java.lang.NoClassDefFoundError: WEB-INF/classes/mypackage/MyEntryPointClass (wrong name: mypackage/MyEntryPointClass)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
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)
我已经google了一下,但找不到任何答案我的问题,我读了几个其他问题在这里略有不同,所以我想我会发布。
Java 1.5,而不是我认为应该有什么区别。



