Java NetBeans生成的jar文件不会通过双击启动

Java NetBeans生成的jar文件不会通过双击启动,java,netbeans-7,Java,Netbeans 7,我知道这个问题在这里已经讨论过很多次了。我在MAC上运行OSX 10.7.4和NetBeans 7.2.1 我不知道这是否是一个新的皱纹,我是一个java新手。在任何情况下,如果在“项目”窗口中选择了“我的项目”,则会显示项目: Idealizer->Source Packages->components->AlsRun.java、GraphingData.java、Idealizer.java、jButtonListenerExample.java AlsRun是主要的班级。我可以从IDE中运

我知道这个问题在这里已经讨论过很多次了。我在MAC上运行OSX 10.7.4和NetBeans 7.2.1

我不知道这是否是一个新的皱纹,我是一个java新手。在任何情况下,如果在“项目”窗口中选择了“我的项目”,则会显示项目:

Idealizer->Source Packages->components->AlsRun.java、GraphingData.java、Idealizer.java、jButtonListenerExample.java

AlsRun是主要的班级。我可以从IDE中运行代码,或者通过压缩dist并将其移动到任何地方,然后在dist中键入:java-jar-Idealizer.jar

关于这个问题的其他讨论似乎涉及MANIFEST.MF。MANIFEST.MF显示正确:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_35-b10-428-11M3811 (Apple Inc.)
Class-Path: 
X-COMMENT: Main-Class will be added automatically by build
Main-Class: components.AlsRun
我认为以下是两个重要提示

大提示1:

当我从命令行运行代码时,程序将接管,屏幕上显示的程序名为components.AlsRun。 当我试图通过双击finder来启动它时,会启动一个程序,并且出现的名称也是Run。在后一种情况下启动的程序没有任何作用,我只能在强制退出的情况下杀死它

大提示2:

在写完最后一句话后,我问自己如何从命令行杀死它。如果我双击运行程序,然后运行ps-A | grep java,它将返回以下结果:

33383 ?? 0:00.84 /Library/Internet Plug-ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
-jar/Users/pearson/NetBeansProjects/Idealizer/dist/Idealizer.jar

当我从命令行运行程序,然后执行ps-A | grep java时,它返回

33394 ttys001    0:01.46 /usr/bin/java -jar Idealizer.jar
它运行不同版本的java,这取决于我是通过双击还是通过命令行启动它

显然,NetBeans认为我正在创建一个与应用程序不同的小程序

我在这里不知所措。为我生成错误的代码的最短版本是:

package components; 
import javax.swing.JFileChooser;

public class AlsRun {

public static void main(String[] args) {

    JFileChooser fc = new JFileChooser();
    int returnVal = fc.showOpenDialog(null);        

    };
}

按照此处的说明进行操作:


解决了这个问题

试试NetBeansRC17.3。我认为这是默认处理程序的问题。如果您的系统将小程序启动程序绑定到*.jar,双击它就会启动。不知道在OSX中可以在哪里配置,抱歉。我卸载了NetBeans 7.2,安装的RC2 7.3找不到RC1。它在IDE中不起作用。我重新安装了7.2,它返回到以前的错误。我想我找到了导致问题的代码。可以双击如果:私有静态组件A组件;被注释掉了。否则就不行了。public类AlsRun{//private static Component aComponent;public static void mainString[]args{//final JFileChooser fc=new JFileChooser;//int returnVal=fc.showOpenDialogaComponent;try{Thread.sleep5000;}catch InterruptedException ex{Logger.getLoggerAlsRun.class.getName.logLevel.SEVERE,null,ex;};}