关于java:如何运行JAR文件

How to run a JAR file

我创建了一个这样的JAR文件:

1
jar cf Predit.jar *.*

我双击这个jar文件(它不起作用)。所以我从DOS提示符运行它,如下所示:

1
java -jar Predit.jar

它引发了"未能加载主类"异常。所以我提取了这个jar文件:

1
jar -xf Predit.jar

我运行了类文件:

1
java Predit

效果很好。我不知道JAR文件为什么不能工作。请告诉我运行JAR文件的步骤


您需要在JAR文件清单中指定一个主类。

Oracle的教程包含了一个完整的演示,但这里是另一个从头开始的演示。您需要两个文件:

Test.java:

1
2
3
4
5
6
7
public class Test
{
    public static void main(String[] args)
    {
        System.out.println("Hello world");
    }
}

MF:

1
2
Manifest-version: 1.0
Main-Class: Test

请注意,文本文件必须以新行或回车结束。如果最后一行没有以新行或回车。

然后运行:

1
2
3
javac Test.java
jar cfm test.jar manifest.mf Test.class
java -jar test.jar

输出:

1
Hello world


1
java -classpath Predit.jar your.package.name.MainClass


运行JAR之前,检查manifest.mf文件中是否有Main-Class: classname可用。manifest.mf存在于jar中。

1
java -jar filename.jar

您必须向JAR添加清单,它告诉Java运行时主类是什么。创建包含以下内容的文件"manifest.mf":

1
2
Manifest-Version: 1.0
Main-Class: your.programs.MainClass

将"your.programs.mainClass"更改为实际的主类。现在将该文件放入名为"META-INF"的子文件夹中的JAR文件中。您可以使用任何zip实用程序。


创建.class,.jar文件的一种非常简单的方法。

执行JAR文件。不用太担心清单文件。简单易行。

Java示例hello World程序

1
2
3
4
5
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

编译类文件

1
javac HelloWorld.java

创建JAR文件

1
jar cvfe HelloWorld.jar HelloWorld HelloWorld.class

1
jar cvfe HelloWorld.jar HelloWorld *.class

运行JAR文件

1
 java -jar HelloWorld.jar

1
java -cp HelloWorld.jar HelloWorld

如果不想创建一个清单来运行JAR文件,那么在运行JAR文件时,可以直接从命令行引用主类。

1
java -jar Predit.jar -classpath your.package.name.Test

这将设置在JAR文件中运行的主类。


爪哇

1
2
3
4
5
class Hello{
   public static void main(String [] args){
    System.out.println("Hello Shahid");
   }
}

MF宣言

1
2
Manifest-version: 1.0
Main-Class: Hello

在命令行上:

1
2
$ jar cfm HelloMss.jar  manifest.mf Hello.class
$ java -jar HelloMss.jar

输出:

1
Hello Shahid


Eclipse可运行JAR文件

创建一个Java项目——EDCOX1×0

  • 如果使用了任何JAR文件,则将它们添加到项目构建路径中。
  • 在创建可运行的JAR文件时,选择具有main()的类。enter image description here

主类

1
2
3
4
5
6
public class RunnableMainClass {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("Name :"+args[0]);
        System.out.println(" ID  :"+args[1]);
    }
}

使用JAVA程序(CMD)运行JAR文件,通过提供参数并在Eclipse控制台中获取输出和显示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class RunJar {
    static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) throws IOException {
        String jarfile ="D:\\JarLocation\\myRunnable.jar";
        String name ="Yash";
        String id ="777";

        try { // jarname arguments has to be saperated by spaces
            Process process = Runtime.getRuntime().exec("cmd.exe start /C java -jar"+jarfile+""+name+""+id);
                    //.exec("cmd.exe /C start dir java -jar"+jarfile+""+name+""+id+" dir");
            BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream ()));
            String line = null;
            while ((line = br.readLine()) != null){
                sb.append(line).append("
"
);
            }
            System.out.println("Console OUTPUT :
"
+sb.toString());
            process.destroy();
        }catch (Exception e){
            System.err.println(e.getMessage());
        }
   }
}

在Eclipse中找到捷径:

帮助?帮助内容?Java开发用户指南?参考文献?菜单和操作


如果您不想处理这些细节,也可以使用Eclipse或NetBeans中的导出JAR助手。


我有这个文件夹结构:

D:\JavaProjects\OlivePressApp\com\lynda\olivepress\Main.class
D:\JavaProjects\OlivePressApp\com\lynda\olivepress\press\OlivePress.class
D:\JavaProjects\OlivePressApp\com\lynda\olivepress\olives\Kalamata.class
D:\JavaProjects\OlivePressApp\com\lynda\olivepress\olives\Ligurian.class
D:\JavaProjects\OlivePressApp\com\lynda\olivepress\olives\Olive.class

Main.classcom.lynda.olivepress包中。

还有两个其他包:

com.lynda.olivepress.press

com.lynda.olivepress.olive

1)创建一个名为"Manifest.txt"的文件,其中有两行,第一行是主类,第二行是空行。

1
Main-Class: com.lynda.olivepress.Main

D:JavaProjectsOlivePressAppManifest.txt

2)使用清单和主类入口点创建JAR

D:JavaProjectsOlivePressApp>jar cfm OlivePressApp.jar Manifest.txt com/lynda/olivepress/Main.class com/lynda/olivepress/*

3)运行罐

java -jar OlivePressApp.jar

注:com/lynda/olivepress/*是指在第1点之前包含上述其他两个包装)


要运行jar,首先必须创建

executable jar

然后

java -jar xyz.jar

命令有效