本文目录一览:
- [JAVA代码写完如何做成Jar ????求详细点的答案](#JAVA代码写完如何做成Jar ????求详细点的答案)
- java怎么打包成jar?
- java怎么转化成jar以及jar简介
- 用JAVA代码怎么生成JAR,请详细点我是新手。最好是有图片解释的。谢谢谢谢啦
- Java项目怎么打成jar包
JAVA代码写完如何做成Jar ????求详细点的答案
我一直用eclipse来编写java程序,最近对手机小程序特别感兴趣,所以安装了WTK和J2ME,通过MIDlet写代码,然后很顺利的右击之后就可以Greate Packge,然后生成jar文件,就可以啦只是个人意见
java怎么打包成jar?
^^java教程^^《制作可执行JAR》本文阐述了如何把一个不可执行的 Java Archive(JAR)文件变成可执行,而不用直接操作manifest文件。你会学到写出短小的一个程序,通过运行 java -jar
命令或在像Windows一样的操作系统里面用双击鼠标运行任何JAR文件。
你可以很容易地把应用程序的一整套class文件和资源文件打包到一个JAR中。事实上这就是jar文件存在的一个目的。另外一个目的就是让用户能很容易地执行被打包到jar文件里面的应用程序。那么为什么jar文件仅仅作为文件在整个java里面占据了次要的地位,而本地执行则被忽视?
要执行一个jar文件,你可以使用 java
命令的 -jar
选项。举一个例子来说,假如你有个名叫 myjar.jar
的文件。这个jar是可以运行的,你可以运行它:java -jar myjar.jar
。另外一个办法就是,当Java Runtime Environment (JRE)已经被安装到一个像Windows的操作系统上,将jar文件与JVM关联(关联 java.exe
跟jar文件)在一起你就可以通过双击jar来运行这个应用程序。当然,jar文件必须是可执行的。
现在的问题是:如何做一个可以执行的jar?
manifest文件以及Main-class入口
在大多数jar中,都在一个叫 META-INF
的目录里面保存了一个叫 MANIFEST.MF
的文件。那个文件里面包含了一个特殊表项名字叫 Main-Class
,告诉 java -jar
命令应该执行哪个class。
问题是你必须为manifest文件手工加入适当表项,而且必须在一定的位置和用一定的格式。不幸的是,不是每个人都喜欢打开写字板编辑配置文件。
让API帮你完成任务
自从Java 1.2发布以来,一个叫 java.util.jar
包的出现,让你能够方便处理jar文件。(注意:该包基于 java.util.zip
)特别地,jar包让你通过 Manifest
类,可以容易操作那些manifest文件。
就让我们用这个API写一个程序吧。首先,这个程序必须知道三样东西:
- 我们要使之可运行的jar文件。
- 运行jar的主类(这个类必须包含在jar中)。
- 输出新jar文件的文件名,因为我们不能简单地覆盖原来的文件。
编写程序
上面列表的三点要求将组成我们的程序的参数。现在,让我们为这个程序选择一个适当的名字。
MakeJarRunnable
听起来觉得怎样?
为main方法检查参数
假设我们的main方法入口点是一个标准的main(String[]
)方法。我们应该这样检查程序的参数:
if(args.length != 3){
System.out.println("Usage: MakeJarRunnable jarfile Main-Class output");
System.exit(0);
}
请注意参数列表是如何描述的,因为这在以下代码中是很重要的。参数的次序和内容不是固定的;然而,如果你要改变他们的话,要记住响应修改其他代码。
访问jar和jar的manifest文件
第一,我们必须创建一些了解jar和manifest的对象:
// Create the JarInputStream object, and get its manifest
JarInputStream jarIn = new JarInputStream(new FileInputStream(args[0]));
Manifest manifest = jarIn.getManifest();
if(manifest == null){
// This will happen if no manifest exists
manifest = new Manifest();
}
设置Main-Class属性
我们把Main-Class入口放到manifest文件的main属性部分。一旦从manifest对象获得这个属性,就可以设置需要的 mainclass。然而,如果main-Class属性已经存在原来的jar当中又如何呢?这里我们只是简单地输出一个警告然后退出。我们能加入一个命令行参数告诉程序使用新的值,而代替了旧的那个:
Attributes a = manifest.getMainAttributes();
String oldMainClass = a.putValue("Main-Class", args[1]);
// If an old value exists, tell the user and exit
if(oldMainClass != null){
System.out.println("Warning: old Main-Class value is: " + oldMainClass);
System.exit(1);
}
输出新的JAR
我们需要创建一个新的JAR文件,所以我们必须使用 JarOutputStream
类。注意:我们必须确定我们不用跟输入文件相同的名字作为输出文件的名字。还有一个方案就是,程序应该考虑到一种情况,就是两个jar文件都是相同的,促使用户覆盖原来的文件,如果他愿意这么做的话。然而,我在保留了这一点,作为读者的一个练习。从如下代码开始:
System.out.println("Writing to " + args[2] + "...");
JarOutputStream jarOut = new JarOutputStream(new FileOutputStream(args[2]), manifest);
我们必须从输入JAR写每个表项到输出的JAR,所以迭代每个表项:
// Create a read buffer to transfer data from the input
byte[] buf = new byte[4096];
// Iterate the entries
JarEntry entry;
while((entry = jarIn.getNextJarEntry()) != null){
// Exclude the manifest file from the old JAR
if("META-INF/MANIFEST.MF".equals(entry.getName())) continue;
// Write the entry to the output JAR
jarOut.putNextEntry(entry);
int read;
while((read = jarIn.read(buf)) != -1){
jarOut.write(buf, 0, read);
}
jarOut.closeEntry();
}
// Flush and close all the streams
jarOut.flush();
jarOut.close();
jarIn.close();
完成程序
当然,我们必须把这些代码放到一个类的main方法里面,并且需要一大堆import代码。完整程序:
import java.io.*;
import java.util.jar.*;
import java.util.zip.*;
public class MakeJarRunnable {
public static void main(String[] args) {
if(args.length != 3){
System.out.println("Usage: MakeJarRunnable jarfile Main-Class output");
System.exit(0);
}
try {
JarInputStream jarIn = new JarInputStream(new FileInputStream(args[0]));
Manifest manifest = jarIn.getManifest();
if(manifest == null){
manifest = new Manifest();
}
Attributes a = manifest.getMainAttributes();
String oldMainClass = a.putValue("Main-Class", args[1]);
if(oldMainClass != null){
System.out.println("Warning: old Main-Class value is: " + oldMainClass);
System.exit(1);
}
System.out.println("Writing to " + args[2] + "...");
JarOutputStream jarOut = new JarOutputStream(new FileOutputStream(args[2]), manifest);
byte[] buf = new byte[4096];
JarEntry entry;
while((entry = jarIn.getNextJarEntry()) != null){
if("META-INF/MANIFEST.MF".equals(entry.getName())) continue;
jarOut.putNextEntry(entry);
int read;
while((read = jarIn.read(buf)) != -1){
jarOut.write(buf, 0, read);
}
jarOut.closeEntry();
}
jarOut.flush();
jarOut.close();
jarIn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
程序使用例子
让我们把这个程序应用到一个例子里面来。假设你有一个应用程序,该程序的入口点是一个叫 HelloRunnableWorld
的类,再假设你已经创建了一个jar叫 myjar.jar
,包含了整个程序。运行 MakeJarRunnable
:
java MakeJarRunnable myjar.jar HelloRunnableWorld myjar_r.jar
正如前面提到的,注意一下我的参数顺序。如果你忘记了顺序,没有参数运行一下程序,它会响应出现一个用法提示信息。
尝试对 myjar.jar
运行 java -jar
命令。然后对 myjar_r.jar
。注意区别不同!好了,你完成了这一切了,浏览一下每个jar的manifest文件 (META-INF/MANIFEST.MF
)。
java怎么转化成jar以及jar简介
Java文件转化成jar的步骤如下:
- 右键文件,点击导出(Export);
- 选择Java文件夹下的 JAR file,点击next;
- 在JAR file后面的文本框中选择导出的位置;
- 接下来全部点击next;
- 直到最后一个页面时点击finish;
- 完成。
接下来介绍下jar:
JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。 Java中可将自己写的代码导成jar文件,下次需要使用时直接导入这个jar包,即可使用这个jar包里的程序。
用JAVA代码怎么生成JAR,请详细点我是新手。最好是有图片解释的。谢谢谢谢啦
jar其实是个压缩文件,和 .rar
文件是一样的东西,里面都是一些 .class
文件,这些文件都是经过 javac
编译后生成的文件。我们运行程序其实就是运行 .class
文件。jar包就是将这些编译好的文件打包。在你调用jar包里面的class时,不用去费时的寻找或者自己定义,最常用的是 \jdk5.0\jre\lib\rt.jar
这个包,里面包含基本的 .class
方法文件。
你可以在命令提示符里面运用以下命令来生成jar包:
jar -cvf xx.jar *.*
其中:
xx
是你自定义的名称;*.*
表示该路径中所有的.class
文件;cvf
是jar命令的参数。
Java项目怎么打成jar包
第一种:在JBuilder中
- 首先你要保证 Run 菜单 → Run Project 能顺利运行;
- 然后 Wizards 菜单 → Native Executable Builder;
- 选中 Compress the contents of the archive(产生jar文件的话);
- Next → Next → 选中 Always include all classes and resources 再 Next → Next → Next;
- 选中 Windows GUI "exe"(产生EXE文件的话)→ Finish;
- 再在项目的文件列表中的 Native Executable 右击 → Make 就可以了。
第二种:在cmd下生成jar文件
- 创建一个
abc.txt
文件,内容如下:Manifest-Version: 1.0 Main-Class: main-class-name
- 在cmd下执行以下命令:
javac *.java jar cvfm abc.jar abc.txt *.class
示例——生成能通过鼠标双击就执行的 .jar
文件
一、编写 Java源程序 Test.java
如下:
// Test.java
import javax.swing.*;
/**
* @(#) Test.java
* Copyleft (c) 2002 RatKing
* @author <a href="ratking@ynet.com">RatKing</a>
* @version 0.1, 2002-11-7
* 描述:一个测试用的Java Application
*/
public class Test extends JFrame {
public Test(String title) {
super(title);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().add(new JLabel("测试!", JLabel.CENTER), SwingConstants.CENTER);
this.pack();
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
Test t = new Test("Test - 测试");
t.setVisible(true);
}
}
二、编译 Test.java
为 Test.class
在命令行执行编译命令:
javac Test.java
三、用文本编辑器编写如下manifest文件,并保存为 abc.txt
Manifest-Version: 1.0
Main-Class: Test
注意:
- 文件内必须是3行文本;
- 第二行冒号后必须有一个空格;
- 第三行是一个空行。
四、将 Test.class
打包成 .jar
文件
在命令行执行编译命令:
jar cvfm Test.jar abc.txt *.class
如果有包名可以这样写,如包名为 test
,一定要在该包的上一层目录执行下面这句:
jar cvfm Test.jar abc.txt test
你可以使用WinZip之类的解压软件看一看刚刚生成的 Test.jar
文件里到底有什么。
五、用鼠标双击 Test.jar
的图标,应该可以看到 Test
执行后的窗口。
说明:如果你正确地安装了 Java运行环境(JRE),那么
.jar
的图标应该是像一页纸并有一个A的形状,就如同写字板的图标。 如果你的.jar
文件默认的打开关联不对,可以重新设置: 我的电脑 → 查看(Win9x)或工具(Win2k)→ 文件夹选项 → 文件类型 → 选择JAR文件 → 编辑该类型文件的属性 → 操作栏填入:
"C:\Program Files\Java\j2re1.4.1\bin\javaw.exe" -jar "%1" %*
(你的 javaw.exe
文件是不是位于 C:\Program Files\Java\j2re1.4.1\bin\
路径下,视你自己电脑的情况而定)
第三种:JBuilder中生成 .exe
文件
- 菜单中选择【Wizards】-【Native Executable Builder....】弹出对话框;
- 在弹出的对话框中第一步(Step 1 of 7)的【Name】输入一个名称,并取消【Always create archive when building the project】点击【Next】;
- 根据需要选择需要的类,再选择【Include class dependencies】,点击【Next】;
- 根据需要选择需要的库文件,再选择下面的4个单选,反复所有的需要的库,点击【Next】;
- 默认点击【Next】;
- 在(Step 5 of 7)的时候选择一个主类运行点击【Next】;
- 在(Step 6 of 7)的时候选择运行平台【Next】;
- 默认点击【Finish】,这时候在工程的目录窗口出现了一个在(Step 1 of 7)输入的【Name】目录;
- 右击这个目录,选择【Rebuild....】,JBuilder就开始编译和创建执行文件或是Jar文件了;
- 等完成之后,该目录下有几个文件,一般是有至少一个jar文件,或是一个exe文件;
- 在Windows打开工程所在的目录,就可以看到里面的有几个刚才编译的文件;
- 执行jar就是用
java -jar ***.jar
、执行exe直接双击。
补充说明:
- 不建议使用JB,因为打包后可执行文件的图标改不了且JB的可执行文件实际上是可执行的jar文件,可以将其exe扩展名改为jar一样可执行。
- 还是使用 JSmooth 较好,首先编写 manifest 文件目的指明 main 类,使用
jar
命令打包成可执行jar文件,然后使用开源的 JSmooth 做成exe。