创建一个独立的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.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; } 

您可以使用ant脚本来构建可运行的JAR。

                  

在此示例中,项目的lib1.jar依赖于两个库: lib1.jarlib2.jar ,它们使用具有指定属性的MANIFEST.MF输出到bin

以下post简要说明了如何使用ANT创建可执行jar :

  • 在使用Ant的新jar文件构建中包含外部jar文件

这篇文章解释了manifestclasspath任务如何帮助创建类路径清单条目(使可执行jar的构造更加健壮且不易出错):

  • Ant – 如何在特定文件夹中获取所有文件的名称

最后一个更复杂的例子演示了在创建可执行jar时使用ivy来管理项目的第三方依赖项:

  • 从default-template ant生成类路径时出错

您可以通过执行以下命令来创建JAR文件:

 jar -c excel.jar MANIFEST.MF *.class 

MANIFEST.MF文件应包含以下行:

 Main-Class: createExcel 

但请考虑以下提示:

有几种方法:

  1. 创建一个jar文件并将您的类(没有依赖项)放在那里。 使用一些工具(任何IDE都有它)来执行此操作并使用main函数指定类。 您也可以从命令行手动执行此操作。 当用户想要运行它时,他应该指定类路径,并且所有依赖项都应该在该类路径中。

  2. 创建相同的jar并创建.bat或.sh文件,在其中设置classpath并运行jar。

  3. 使用一些特殊工具创建跨平台安装程序(但好的工具不是免费的)。

请记住,Netbeans可以帮助你很多;)