我正在使用Java应用程序编写一个简单的程序(不是具有项目的应用程序,而是项目中的应用程序;.java),它具有单个帧。这两个文件都是 .java,所以我不能编写JAR所需的 manifest。java* 像一个带有package的类一样开始,然后导入公共类MyApp并具有main函数,但它仍然是.java文件!我用JDeveloper 11 g写的,如果有帮助的话。有什么想法如何从这些文件中创建JAR吗?
MyApp
swvgeqrz1#
打开命令提示符。转到存放.java文件的目录创建目录构建从命令行运行java编译
javac -d ./build *.java
如果没有错误,在build目录中应该有类树移动到build目录并执行
jar cvf YourJar.jar *
用于添加清单检查jar命令行开关
mcdcgff02#
使用命令行:
javac MyApp.java jar -cf myJar.jar MyApp.class
当然IDE避免使用命令行终端
ep6jt1vc3#
这是我想找到的解决方案,而不是在这里写:首先创建与为.java文件定义的包相对应的目录结构,如果是my.super.application,则创建目录my,并在其中创建super和.java文件App.java然后从命令行:
my.super.application
my
super
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中的库。见下文。
nbproject/build-impl.xml
<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名称。
project.properties
file.reference
ki1q1bka4#
通常你会想要指定一个清单,像这样:
jar -cvfm myJar.jar myManifest.txt myApp.class
其中写道:“create verbose jarFilename manifestFilename”,后跟要包含的文件。详细意味着打印关于它正在做什么的消息。请注意,您提供的清单文件的名称可以是任何名称,因为jar将自动重命名它并将其放入jar文件中的正确目录中。
jar
ecfsfe2w5#
这可以在没有终端的情况下直接从IDE完成。例如,Netbeans。1.使用包创建单独的项目(创建项目- Java - Java类库)。1.把你的.java类放在那里。1.构建此项目。1.转到您的项目文件夹并在那里找到build和dist文件夹。1.在dist文件夹中找到.jar文件。1.获取其他项目并将此.jar文件添加到项目库中。1.现在,您可以直接从代码中引用此库中的类及其方法(如果导入已自动完成)。
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文件。
ls | grep .java
xargs -I {} javac {}
jar -cf myJar.jar *.class
zu0ti5jz7#
也许从Java代码编译JAR的最适合初学者的方法是使用IDE(集成开发环境;基本上只是用户友好的开发软件),如Netbeans或Eclipse。
你可以通过命令行轻松地完成这一切。在执行如下命令之前,请确保您与目标文件位于同一目录中:
javac YourApp.java jar -cf YourJar.jar YourApp.class
...将“YourApp”和“YourJar”分别更改为文件的正确名称。
7jmck4yq8#
如果你有一个简单的主类(比如说Count.class),并且想要一个带有指向这个类的MANIFEST文件的jar作为入口点,你可以这样做:
jar cfe app.jar Count Count.class
来源:https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html
8条答案
按热度按时间swvgeqrz1#
打开命令提示符。
转到存放.java文件的目录
创建目录构建
从命令行运行java编译
如果没有错误,在build目录中应该有类树
移动到build目录并执行
用于添加清单检查jar命令行开关
mcdcgff02#
使用命令行:
当然IDE避免使用命令行终端
ep6jt1vc3#
这是我想找到的解决方案,而不是在这里写:
首先创建与为.java文件定义的包相对应的目录结构,如果是
my.super.application
,则创建目录my
,并在其中创建super
和.java文件App.java
然后从命令行:
注意上面的代码将包含多个库,如果在windows下使用“,”来分隔多个文件,否则在GNU/Linux下使用“:“来创建一个jar文件
以上将创建应用程序,其对应的清单指示App作为主类。
使用java或jar命令行参数无法在jar文件中包含所需的库。
您可以改为:
1.手动解压缩库到jar文件的根文件夹
1.使用IDE(如Netbeans)并在
nbproject/build-impl.xml
的post-jar部分中插入一条规则,以提取jar中的库。见下文。将库添加到Netbeans IDE后,可以在
project.properties
文件中找到file.reference
名称。ki1q1bka4#
通常你会想要指定一个清单,像这样:
其中写道:“create verbose jarFilename manifestFilename”,后跟要包含的文件。详细意味着打印关于它正在做什么的消息。
请注意,您提供的清单文件的名称可以是任何名称,因为
jar
将自动重命名它并将其放入jar文件中的正确目录中。ecfsfe2w5#
这可以在没有终端的情况下直接从IDE完成。例如,Netbeans。
1.使用包创建单独的项目(创建项目- Java - Java类库)。
1.把你的.java类放在那里。
1.构建此项目。
1.转到您的项目文件夹并在那里找到build和dist文件夹。
1.在dist文件夹中找到.jar文件。
1.获取其他项目并将此.jar文件添加到项目库中。
1.现在,您可以直接从代码中引用此库中的类及其方法(如果导入已自动完成)。
e7arh2l66#
下面是另一种很好的方法:
它将从当前目录中获取所有.java文件(
ls | grep .java
)并将它们编译为.class(xargs -I {} javac {}
),然后从以前编译的类(jar -cf myJar.jar *.class
)创建jar文件。zu0ti5jz7#
也许从Java代码编译JAR的最适合初学者的方法是使用IDE(集成开发环境;基本上只是用户友好的开发软件),如Netbeans或Eclipse。
你可以通过命令行轻松地完成这一切。在执行如下命令之前,请确保您与目标文件位于同一目录中:
...将“YourApp”和“YourJar”分别更改为文件的正确名称。
7jmck4yq8#
如果你有一个简单的主类(比如说Count.class),并且想要一个带有指向这个类的MANIFEST文件的jar作为入口点,你可以这样做:
来源:https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html