如何从.java创建JAR

use*_*007 68 java jar

我正在使用Java应用程序编写一个简单的程序(不是具有项目的应用程序,而是项目中的应用程序; .java),它具有单个框架.这两个文件都是.java,因此我无法编写JAR所需的清单.MyApp.java就像一个带有包的类,然后导入公共类MyApp {并且有一个main函数,但它仍然是.java!如果它有帮助我在JDeveloper 11g中写它...

有关如何从这些文件制作JAR的任何想法?

Big*_*ike 85

打开命令提示符.

转到您拥有.java文件的目录

创建目录构建

从命令行运行java编译

javac -d ./build *.java
Run Code Online (Sandbox Code Playgroud)

如果没有错误,在构建目录中你应该有你的类树

移动到构建目录并执行

jar cvf YourJar.jar *
Run Code Online (Sandbox Code Playgroud)

用于添加清单检查jar命令行开关


ab_*_*v86 27

只需使用命令行:

javac MyApp.java
jar -cf myJar.jar MyApp.class
Run Code Online (Sandbox Code Playgroud)

当然IDE避免使用命令行终端

  • 上面工作,但我需要指定myApp的`.class`.所以它是`jar -cf myJar.jar myApp.class` (11认同)
  • 这里也拼写错误,并假设没有包语句.不够. (3认同)

sar*_*son 12

好的,这是我想要找到的解决方案,而不是在这里我写它:

首先创建与.java文件定义的包对应的目录结构,如果是my.super.application则创建目录"my"并在其中"super",并在其中创建.java文件"App.java"

然后从命令行:

   javac -cp /path/to/lib1.jar:/path/to/lib2.jar path/to/my/super/App.java
Run Code Online (Sandbox Code Playgroud)

注意上面将包含多个库,如果在windows下使用","分隔多个文件,否则在GNU/Linux下使用":"创建一个jar文件

   jar -cvfe App.jar App my/app/
Run Code Online (Sandbox Code Playgroud)

上面将创建应用程序及其相应的Manifest,指示App为主类.

使用java或jar命令行参数无法在jar文件中包含所需的库.

你可以改为:

  1. 手动将库提取到jar文件的根文件夹
  2. 使用诸如Netbeans之类的IDE并在nbproject/build-impl.xml的post-jar部分中插入规则以提取jar中的库.见下文.
<target name="-post-jar">
        <!-- Empty placeholder for easier customization. -->
        <!-- You can override this target in the ../build.xml file. -->
  <jar jarfile="${dist.jar}" update="true">  
            <zipfileset src="${dist.jar}" includes="**/*.class" />  
            <zipfileset src="${file.reference.iText-1.0.8.jar}" includes="**/*"/>
      <zipfileset src="${file.reference.itextpdf-3.2.1.jar}" includes="**/*"/>
  </jar>
    </target>
Run Code Online (Sandbox Code Playgroud)

将库添加到Netbeans IDE后,可以在project.properties文件中找到file.reference名称.


Evg*_*eev 7

通常你会想要指定一个清单,如下所示:

jar -cvfm myJar.jar myManifest.txt myApp.class
Run Code Online (Sandbox Code Playgroud)

其中包括:"create verbose jarFilename manifestFilename",后跟您要包含的文件.详细信息表示打印有关其正在执行的操作的消息.

请注意,您提供的清单文件的名称可以是任何名称,因为jar它会自动重命名并将其放入jar文件中的正确目录中.


Zon*_*Zon 6

这可以在没有终端的情况下直接从IDE完成.例如,Netbeans.

  1. 使用包创建一个单独的项目(Create Project - Java - Java Class Library).
  2. 把你的.java类放在那里.
  3. 建立这个项目.
  4. 转到项目文件夹,在那里找到build和dist文件夹.
  5. 在你的dist文件夹中找到.jar文件.
  6. 获取您的其他项目并将此.jar文件添加到项目库.
  7. 现在,如果自动导入,您可以直接从代码中引用此库及其方法中的类.


小智 5

这是另一种奇特的方法:

$ ls | grep .java | xargs -I {} javac {} ; jar -cf myJar.jar *.class
Run Code Online (Sandbox Code Playgroud)

它将ls | grep .java从当前目录获取所有 .java 文件 ( ) 并将它们编译为 .class ( xargs -I {} javac {}),然后从先前编译的类 ( jar -cf myJar.jar *.class) 创建 jar 文件。