Javaプログラムからローカルjarファイルを実行するにはどうすればよいですか?
Jarファイルは、Java呼び出し元プログラムのクラスパスにありません。
ProcessBuilder
を使用して新しいJVMを起動することをお勧めします。
ここから始めましょう。
ProcessBuilder pb = new ProcessBuilder("/path/to/Java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
Process proc = Runtime.getRuntime().exec("Java -jar Validate.jar");
proc.waitFor();
// Then retreive the process output
InputStream in = proc.getInputStream();
InputStream err = proc.getErrorStream();
byte b[]=new byte[in.available()];
in.read(b,0,b.length);
System.out.println(new String(b));
byte c[]=new byte[err.available()];
err.read(c,0,c.length);
System.out.println(new String(c));
Windowsで行う別の方法は次のとおりです。
Runtime.getRuntime().exec("cmd /c start jarFile");
このようにして、プロセスの優先度も設定できます(通常/低/など)
まず、問題の説明が少し不明瞭です。 jarファイルからクラスをロードしてアプリケーションで使用するのか、または実行するメインファイルがjarに含まれているのかがわかりません。私はそれが2番目であると仮定します。
もしそうなら、ここで多くのオプションがあります。最も簡単なものは次のとおりです。
String filePath; //where your jar is located.
Runtime.exec(" Java -jar " + filepath);
出来上がり... jarファイルを実行する必要がなく、クラスをロードする必要がある場合は、お知らせください。
この1行のコードのみを使用することにより、任意の場所からjarファイルを実行できます。
Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));
どこで
new File("your path to jar")
それが役に立てば幸い。
ありがとう。
Javaアプリケーション内から実行可能jarを実行するには、 https://docs.Oracle.com/javase/tutorial/deploymentからJarClassLoader
をコピーできます。 /jar/examples/JarClassLoader.Java
このように使用します。このスニペットでは、jarUrl
は、jarをダウンロードするURLです。たとえば、 file:/tmp/my-jar.jar で、argsは、渡す文字列の配列です。 jarへのコマンドライン引数。
JarClassLoader loader = new JarClassLoader(jarUrl);
String main = loader.getMainClassName();
loader.invokeClass(main, args);
コードに他の誰かのバイナリを挿入していることに注意してください。無限ループでスタックした場合、スレッドはハングし、System.exit()を呼び出すと、JVMは終了します。
引数で静的メソッドmainを呼び出します
String args[] = {"-emaple","value"};
PortMapperStarter.main(args);