如何从.java文件生成JAR?

ogq8wdun  于 2023-06-04  发布在  Java
关注(0)|答案(8)|浏览(502)

我正在使用Java应用程序编写一个简单的程序(不是具有项目的应用程序,而是项目中的应用程序;.java),它具有单个帧。这两个文件都是 .java,所以我不能编写JAR所需的 manifest
java* 像一个带有package的类一样开始,然后导入公共类MyApp并具有main函数,但它仍然是.java文件!我用JDeveloper 11 g写的,如果有帮助的话。
有什么想法如何从这些文件中创建JAR吗?

swvgeqrz

swvgeqrz1#

打开命令提示符。
转到存放.java文件的目录
创建目录构建
从命令行运行java编译

javac -d ./build *.java

如果没有错误,在build目录中应该有类树
移动到build目录并执行

jar cvf YourJar.jar *

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

mcdcgff0

mcdcgff02#

使用命令行:

javac MyApp.java
jar -cf myJar.jar MyApp.class

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

ep6jt1vc

ep6jt1vc3#

这是我想找到的解决方案,而不是在这里写:
首先创建与为.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

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

jar -cvfe App.jar App my/app/

以上将创建应用程序,其对应的清单指示App作为主类。
使用java或jar命令行参数无法在jar文件中包含所需的库。
您可以改为:
1.手动解压缩库到jar文件的根文件夹
1.使用IDE(如Netbeans)并在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>

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

ki1q1bka

ki1q1bka4#

通常你会想要指定一个清单,像这样:

jar -cvfm myJar.jar myManifest.txt myApp.class

其中写道:“create verbose jarFilename manifestFilename”,后跟要包含的文件。详细意味着打印关于它正在做什么的消息。
请注意,您提供的清单文件的名称可以是任何名称,因为jar将自动重命名它并将其放入jar文件中的正确目录中。

ecfsfe2w

ecfsfe2w5#

这可以在没有终端的情况下直接从IDE完成。例如,Netbeans。
1.使用包创建单独的项目(创建项目- Java - Java类库)。
1.把你的.java类放在那里。
1.构建此项目。
1.转到您的项目文件夹并在那里找到build和dist文件夹。
1.在dist文件夹中找到.jar文件。
1.获取其他项目并将此.jar文件添加到项目库中。
1.现在,您可以直接从代码中引用此库中的类及其方法(如果导入已自动完成)。

e7arh2l6

e7arh2l66#

下面是另一种很好的方法:

$ ls | grep .java | xargs -I {} javac {} ; jar -cf myJar.jar *.class

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

zu0ti5jz

zu0ti5jz7#

也许从Java代码编译JAR的最适合初学者的方法是使用IDE(集成开发环境;基本上只是用户友好的开发软件),如Netbeans或Eclipse。

  • 安装并设置IDE。Here is the latest version of Eclipse
  • 在IDE中创建一个项目,并将Java文件放在项目文件夹中。
  • 在IDE中选择项目并将项目导出为JAR。仔细检查导出时是否选择了适当的java文件。

你可以通过命令行轻松地完成这一切。在执行如下命令之前,请确保您与目标文件位于同一目录中:

javac YourApp.java
jar -cf YourJar.jar YourApp.class

...将“YourApp”和“YourJar”分别更改为文件的正确名称。

7jmck4yq

7jmck4yq8#

如果你有一个简单的主类(比如说Count.class),并且想要一个带有指向这个类的MANIFEST文件的jar作为入口点,你可以这样做:

jar cfe app.jar Count Count.class

来源:https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

相关问题