2009-12-22 166 views
6

我想使“双击”cli应用程序,但仍然没有得到如何。 我知道我应该以某种方式编辑清单,但仅此而已。我搜索了一下。但没有成功。 感谢您的任何提示。 下面是构建输出,运行和清单:如何使用netbeans创建可执行文件.jar文件

compile: 
Created dir: /home/nick/NetBeansProjects/SemestralWork/dist 
Building jar: /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar 
Not copying the libraries. 
To run this application from the command line without Ant, try: 
java -jar "/home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar" 
jar: 
BUILD SUCCESSFUL (total time: 1 second) 


java -jar /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar 

Exception in thread "main" java.lang.NoClassDefFoundError: semestralwork/Main 
Caused by: java.lang.ClassNotFoundException: semestralwork.Main 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:319) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:264) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332) 
Could not find the main class: semestralwork.Main. Program will exit. 

MY MANIFEST created with build: 

Manifest-Version: 1.0 

Ant-Version: Apache Ant 1.7.1 

Created-By: 14.0-b08 (Sun Microsystems Inc.) 

Main-Class: semestralwork.Main 

Class-Path: 

X-COMMENT: Main-Class will be added automatically by build 

回答

0

默认一流的搜索路径可能是问题。您应该尝试将目录更改为jar所在的位置,然后使用java -jar Semestral.jar启动。你也可能错误地将主要类别命名。还请包括你的包装结构。

0

使用ZIP工具打开JAR文件(或者如果您使用的是Linux或jar tvf ...,请尝试less ...)。确保在那里有一个目录semestralwork,其中包含一个文件Main.class

+0

只有一种叫做“encryption.class”的方法,我从主要方法 – landscape 2009-12-22 14:09:08

+0

调用那么这就是你的问题。该类缺少JAR,这是Java无法找到它的原因。 – 2009-12-22 16:18:30

1

从.jar 不带 netbeans制作.exe更容易。 这里是我的建议: 1.使用这种特殊的应用程序(例如:JSmooth,JEXECreator等) 2. C++程序启动一个JVM(见本tutorial

6

这两行告诉你所有你需要知道:

Exception in thread "main" java.lang.NoClassDefFoundError: semestralwork/Main 
Caused by: java.lang.ClassNotFoundException: semestralwork.Main 

和另外的线索是由清单输出下降:

Main-Class: semestralwork.Main 

这意味着该JAR文件正在寻找一个名为包里面有一个名为Main的类。它在这一点上失败了,因为它找不到semestralwork包或Main类。

正如您在您的问题中指出的那样,问题确实存在于清单文件中。你可以,如果你想在你的JAR文件中直接编辑这一点,但一个更好的想法是从NetBeans中做到这一点:

  • 点击'文件 - >项目属性(semestralwork)”
  • 在对话框打开,在左侧目录树中选择Run
  • 然后在右边,标记Main class:场下,进入完全限定类名要执行的命令行运行时类的

在你的情况,我从@阿龙的回答您的评论看,如果你的主类是在一个名为encryption.java文件,它是在默认包(不包),只需输入encryption

完成此操作后,请执行清理并构建,然后再次尝试从命令行运行它。

HTH

4

自从我遇到同样的问题,我可以明确的解决方案一点点。

您必须创建主Java类方法的外部(例如,default_package文件夹),然后调用你的方法(文件夹),e.g import your_folder.connected_class;在主类。

希望我可以帮助有同样问题的人。

0

很简单。下载netbeans的副本。在netbeans中创建一个新项目。转到Projects Explorer中的主类。这应该是文件夹“YourProject”作为YOURPROJECT.JAVA类。这是你想要开始的yourproject.java文件。只需将你的代码写入public static void main区域即可。您可以使用顶部工具栏中的绿色播放按钮运行该程序。

相关问题