Java 创建独立的jar文件
我使用Netbeans构建了一个Java 创建独立的jar文件,java,swing,deployment,installation,executable-jar,Java,Swing,Deployment,Installation,Executable Jar,我使用Netbeans构建了一个jar文件,它在我的系统中运行良好。但是我想制作能够在所有系统中运行的jar文件,该文件具有JRE,即使在该系统中没有设置classpath,它也应该正常工作 package circle; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.Mous
jar
文件,它在我的系统中运行良好。但是我想制作能够在所有系统中运行的jar
文件,该文件具有JRE,即使在该系统中没有设置classpath
,它也应该正常工作
package circle;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Circle {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Circle().createAndShowGUI();
}
});
}
private void createAndShowGUI() {
JFrame f = new JFrame("Swing Paint Demo");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new MyPanel());
f.pack();
f.setVisible(true);
}
class MyPanel extends JPanel {
public MyPanel() {
setBorder(BorderFactory.createLineBorder(Color.black));
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
startX=e.getX();
startY=e.getY();
}
});
addMouseMotionListener(new MouseAdapter() {
public void mouseDragged(MouseEvent e) {
X=e.getX();
Y=e.getY();
repaint();
}
});
}
public Dimension getPreferredSize() {
return new Dimension(250,200);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
//g.setColor(Color.RED);
//g.fillRect(squareX,squareY,squareW,squareH);
g.setColor(Color.BLACK);
g.drawOval(startX,startY,X-startX,Y-startY);
g.fillOval(startX,startY,X-startX,Y-startY);
}
}
private int startX,startY,X,Y;
}
只需执行以下命令即可创建JAR文件:
jar -c excel.jar MANIFEST.MF *.class
MANIFEST.MF文件应包含以下行:
Main-Class: createExcel
<>但请考虑以下提示:
有几种方法:
请记住,Netbeans可以为您提供很多帮助;) 您可以使用
ant
脚本来构建可运行的JAR
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for Project SimpleApp with libraries in sub-folder">
<!--ANT 1.7 is required -->
<target name="create_run_jar">
<jar destfile="C:/Workspaces/SimpleApp/SimpleApp.jar">
<manifest>
<attribute name="Main-Class" value="SimpleApp"/>
<attribute name="Class-Path" value=". SimpleApp_lib/lib1.jar SimpleApp_lib/lib2.jar"/>
</manifest>
<fileset dir="C:/Workspaces/SimpleApp/bin"/>
</jar>
<delete dir="C:/Workspaces/SimpleApp/SimpleApp_lib"/>
<mkdir dir="C:/Workspaces/SimpleApp/SimpleApp_lib"/>
<copy file="C:/path/to/lib/lib1.jar" todir="C:/Workspaces/SimpleApp/SimpleApp_lib"/>
<copy file="C:/path/to/lib/lib2.jar" todir="C:/Workspaces/SimpleApp/SimpleApp_lib"/>
</target>
</project>
在本例中,项目的
SimpleApp
依赖于两个库:lib1.jar
和lib2.jar
,它们被输出到bin
,其中MANIFEST.MF
具有指定的属性 下面的帖子简要介绍了如何使用ANT创建一个应用程序:
.jnlp
文件类型)中提供的。。我明白了,这次从不同的方向来参加“JWS不好”。)Netbeans是开源的,是一个很棒的工具,GetDown也是开源的,也是一个很棒的工具;)。继续为使用“好/更好”等充满价值的术语提出这些愚蠢的理由,我需要连续投票否决这些答案。请帮我省力。如果您希望指出“功能X由工具A提供,但不是工具B提供”,请使用该功能,但不要使用价值判断。然后我们可以讨论一下JWS提供的东西,这些东西在任何第三方工具中都找不到如果您想表明您的想法与其他想法相反,只需说出您的想法并与其他工具进行逻辑比较即可;)然后社区将作出判断!我可以用GetDown升级JRE,所以如果你能用JWS做到这一点,请告诉我,我将非常感激并感谢你。我在这里的参与不是为了投票,只是因为我喜欢分享知识和向你们这样有知识的人学习。我们可以就GetDown和JWS或其他技术的特性进行友好的聊天,并在这里与社区共享结果。那么,为什么要说对方愚蠢和谴责呢!“我可以用GetDown升级JRE”与此无关。JRE是自动更新的。OtohJWS提供了指定应用程序的功能。JRE版本要求。因此,如果一个JWS应用程序。需要一个特定的微版本,它可以指定它。