我有以下问题.我在NetBeans IDE 6.8中有一个Java项目.当我编译它并产生一个包含所有可能的.jar文件时,META-INF就不对了.它不包含要执行的类 - 使用main()方法.
当我单击IDE中的"运行"按钮时,一切正常.项目的设置也是正确的 - 指向我项目中的一个类.
我尝试使用清单文件添加文件夹META-INF,但我没有管理.
有没有办法在NetBeans中手动执行此操作,因为我发现如果我在清单中添加缺少的Main类,一切正常.
(我想我遇到了某种错误...)
//编辑:我之后的结果是我希望使用NetBeans构建创建的jar可以使用命令执行:
从Sun文档引用:
在清单文件中设置Main-Class后,您可以从命令行运行该应用程序:
java -jar app.jar
我在名为test.java的文件中有以下代码,该文件位于目录C:\ D\JavaProjects中
class test
{
public static void main( String[] str )
{
System.out.println( "Hello, World! from test" );
}
}
class Test
{
public static void main( String[] str )
{
System.out.println( "Hello, World!" );
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行"javac test.java"时,它输出test.class.现在,如果我做"java test",我会得到以下输出:
线程"main"中的异常java.lang.NoClassDefFoundError:java.lang.ClassLoader.defineClass1(本机方法)中的java.lang.ClassLoader.defineClass1(本地方法)中的java.lang.ClassLoader上的java(错误名称:Test). java.net.URLClassLoader.defineClass(未知来源)的java.securityClassLoader.defineClass(未知来源)的javaC.URLClassLoader.access $ 000(未知来源)java.net.URLClassLoader $ 1上的defineClass(未知来源).在java.security.AccessController.doPrivileged(本机方法)上的java.security.AccessController.doPrivileged(本机方法)中运行(未知来源),位于java.lang.ClassLoader.findClass(未知来源),位于sun.misc.Launcher $ AppClassLoader上的java.lang.ClassLoader.loadClass(未知来源). java.lang.ClassLoader.loadClass(Unknown Source)中的loadClass(Unknown Source)无法找到主类:test.程序将会退出.
但是,当我做"java测试"时,我得到了
你好,世界!
现在,如果我简单地反转两个类声明的出现,以便在测试之前声明Test,则java编译器输出文件Test.class.现在做"java test"给出输出:
你好,世界!从测试
但"java Test"给出了
线程"main"中的异常java.lang.NoClassDefFoundError:在java.lang.ClassLond的java.lang.ClassLoader.defineClassCond(未知源)的java.lang.ClassLoader.defineClass1(本地方法)中测试(错误名称:test). java.net.URLClassLoader.defineClass(未知来源)的java.securityClassLoader.defineClass(未知来源)的javaC.URLClassLoader.access $ 000(未知来源)java.net.URLClassLoader $ 1上的defineClass(未知来源).在java.security.AccessController.doPrivileged(本机方法)上的java.security.AccessController.doPrivileged(本机方法)中运行(未知来源),位于java.lang.ClassLoader.findClass(未知来源),位于sun.misc.Launcher $ AppClassLoader上的java.lang.ClassLoader.loadClass(未知来源). java.lang.ClassLoader.loadClass(Unknown Source)中的loadClass(Unknown Source)无法找到主类:Test.程序将会退出.
现在,我知道在同一个文件中有两个带有main的类是很奇怪的,但这种行为似乎完全不合逻辑,更像是一个bug.有人能指出我指定这种行为的Java语言规范的相应部分吗?非常感谢您的帮助.