0

わかりましたので、jar内でクラスを実行しようとしています

jar内でクラスを実行するにはどうすればよいですか? それさえ可能なら。

    button1.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            try {
                Runtime.getRuntime().exec("java -Dfile.encoding=Cp1252 -classpath MiddleEarth728/src/bin;MiddleEarth728/src/lib/libs.jar;MiddleEarth728/src/lib/graphics.jar; MiddleEarth728.src.Loader");
                dispose();
            } catch (Exception err) {
                err.printStackTrace();
            }
        }

    });

    button2.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            try {
                Runtime.getRuntime().exec("Java -Xmx500m client 0 0 highmem members 0");
                dispose();
            } catch (Exception err) {
                err.printStackTrace();
            }
        }

    });
4

2 に答える 2

0

クラスパスにjarを含めて、クラスを呼び出さないのはなぜですか??

とにかく、実行時に jar をロードする必要がある場合は、クラス ローダーを使用する必要があります。

URL[] urls = { new URL("jar:file:" + path + "!/") };
cl = URLClassLoader.newInstance(urls);
cl.loadClass(className);
于 2013-03-28T13:18:51.343 に答える
0

「クラスを実行」するのではなく、そのクラスのメイン メソッドを実行したい。これは、リフレクションを使用して行うことができます。

URL[] urls = { new URL("jar:file:" + path + "!/") };
cl = URLClassLoader.newInstance(urls);
Class clazz = cl.loadClass(className);
Method mainMethod = clazz.getDeclaredMethod("main", String[].class);
mainMethod.invoke(null, new String[]{}); //can add args here if needed

別の JVM を生成する唯一の利点は、セキュリティです。

于 2013-03-28T14:18:29.573 に答える