我的.jar文件不会做任何事情

时间:2010-04-21 05:02:15

标签: java jar

我创建了一个程序,它或多或少地将一个字符串数组作为对象并随机打印一个。

so basicaly

class Fun 
{


       string[] namestrings = new string[#] 

       constructor() 
       { fill with some strings} 

       public static void main (String[]arg) 
       { 
            create instance of class
            do some junk with it 
            method that prints it 
       } 
       method that prints it {} 
       another method 
    } 

当我在命令行上编译并运行它时它工作正常但是当在命令行上我输入jar -cf Happy.jar Fun.class

我得到一个名为Happy的.jar文件,当我点击它时,我收到一条错误消息,上面写着“java Jar文件很高兴无法启动阅读consol可能的错误消息”我有一台Mac我正在运行lepord如果有所不同。这是怎么回事?

4 个答案:

答案 0 :(得分:3)

拥有包含以下内容的manifest.mf,并将其作为META-INF / manifest.mf打包到您的JAR文件中

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 14.3-b01 (Sun Microsystems Inc.)
Main-Class: Fun

然后,您可以使用

执行您的申请
java -jar Happy.jar
如果您将项目创建为Java Application,

IDE通常会自动为您执行此操作。

答案 1 :(得分:2)

您还可以在JAR的清单中添加Main-Class属性。然后你可以这样做

java -jar Happy.jar

请参阅this

答案 2 :(得分:1)

你需要告诉.jar文件它在运行时会执行哪个类。

在你的情况下听起来很愚蠢,因为你只有一个类,但功能齐全的java应用程序可能有数百个。

你这样做的方法是添加一个名为manifest的特殊文件,你告诉jar,嘿,这是你应该运行的类。

所以试试这个:

// HelloWold.java
// you know 
public class HelloWorld {
    public static void main( String [] args ) {
       System.out.printn("Look, I'm running");
    }
 }

将其保存到HelloWorld.java

编译

$javac HelloWorld.java 

使用此内容创建manifest.mf文件:

  Main-Class: HelloWorld

和所有人在一起。

 $jar -cmf manifest.mf  yourJar.jar HelloWorld.class

创建了一个名为yourJar.jar的文件。

现在,如果你双击它,它会运行,但它会立即消失,你可以从命令运行它,如输入:

 $java -jar yourJar.jar 

该消息将显示在控制台中。

我希望这会有所帮助。

答案 3 :(得分:0)

您的命令中不需要.class文件。所以:

java -jar Happy.jar Fun