相关疑难解决方法(0)

如何在NetBeans项目生成的jar中的清单文件中设置Main类

我有以下问题.我在NetBeans IDE 6.8中有一个Java项目.当我编译它并产生一个包含所有可能的.jar文件时,META-INF就不对了.它不包含要执行的类 - 使用main()方法.

当我单击IDE中的"运行"按钮时,一切正常.项目的设置也是正确的 - 指向我项目中的一个类.

我尝试使用清单文件添加文件夹META-INF,但我没有管理.

有没有办法在NetBeans中手动执行此操作,因为我发现如果我在清单中添加缺少的Main类,一切正常.

(我想我遇到了某种错误...)

//编辑:我之后的结果是我希望使用NetBeans构建创建的jar可以使用命令执行:

从Sun文档引用:

在清单文件中设置Main-Class后,您可以从命令行运行该应用程序: java -jar app.jar

java netbeans manifest

19
推荐指数
1
解决办法
14万
查看次数

单个Java文件中的多个类,每个类都有一个main方法 - 意外行为?

我在名为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语言规范的相应部分吗?非常感谢您的帮助.

java program-entry-point

4
推荐指数
1
解决办法
4436
查看次数

标签 统计

java ×2

manifest ×1

netbeans ×1

program-entry-point ×1