4

Netbeans を使用してjarファイルを作成しましたが、システムでうまく機能しています。しかし、JREを備えたすべてのシステムで実行できるファイルを作成したいのですが、そのシステムに設定されていなくjarても正しく動作するはずです。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;
}
4

3 に答える 3

2

次の投稿には、 ANT を使用して実行可能な jarを作成する方法が簡単に説明されています。

この投稿では、 manifestclasspathタスクがクラスパス マニフェスト エントリの作成をどのように支援できるかを説明しています (実行可能な jar の構築をより堅牢にし、エラーを起こしにくくします)。

最後に、実行可能な jar を作成するときに、 ivyを使用してプロジェクトのサードパーティの依存関係を管理する方法を示す、より複雑な例を示します。

于 2012-09-02T01:13:05.067 に答える
2

スクリプトを使用し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>

この例では、プロジェクトは と のSimpleApp2 つのライブラリに依存してlib1.jarおり、指定された属性を持つ に 出力lib2.jarされます。binMANIFEST.MF

于 2012-09-01T18:11:35.717 に答える
1

単純に次のコマンドを実行してJARファイルを作成できます。

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

MANIFEST.MFファイルには次の行が含まれている必要があります。

Main-Class: createExcel

ただし、次のヒントも検討してください。

いくつかの方法があります。

  1. jarファイルを作成し、そこにクラス(依存関係なし)を配置します。これを行うには、いくつかのツール(任意のIDEにあります)を使用して、main関数でクラスを指定します。コマンドラインから手動で行うこともできます。ユーザーがそれを実行したいときは、クラスパスを指定する必要があり、すべての依存関係はそのクラスパスに含まれている必要があります。

  2. 同じjarを作成し、クラスパスを設定してjarを実行する.batまたは.shファイルを作成します。

  3. いくつかの特別なツールを使用してクロスプラットフォームインストーラーを作成します(ただし、優れたツールは無料ではありません)。

Netbeansはあなたを大いに助けることができることを忘れないでください;)

于 2012-09-01T16:20:49.103 に答える