2011-06-21 13 views
1

JARファイル(「AccessDB.jar」 - 実行時にツールを起動します)があります。 Netbeans 7.0のこの場所(D:\ NB \ ProjFolder)からこのjarファイルにアクセスする必要があります。私はProcessBuilderを使ってそれを読んでみましたが、失敗しました。NetBeansでJavaコードからjarファイルを実行する方法

このJavaコードから、(jarファイル内の)ツールを読み込んで起動する必要があります。このためにコードはどのように変更できますか?

public class classAccessDB { 

public void GenerateAccessDB() { 
    Runtime run = Runtime.getRuntime(); 
try 
{ 
    ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\Java\\jdk1.6.0_20\\bin\\java.exe", "-jar", "AccessDB.jar"); 
    pb.directory(new File("D:\\NB\\ProjFolder")); 
    Process p = pb.start(); 
    InputStream is = p.getInputStream(); 
    BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

    String resultOutput = br.toString(); 
    System.out.println(resultOutput); 
} 
catch(Exception E) 
{ 
    E.printStackTrace(); 
    System.out.println(E.getMessage()); 
} 
} 
} 
+0

を使用することができますjarファイルを実行するコマンドがあります(JREがインストールされている場合)。そして、アプリケーションからバッチファイルを実行します。 - 私は "JavaのJARファイルのEXEを作成"のためのグーグル - これはあなたを助けることを願って!!!! 'Runtime.getRuntime()。exec(" batch file complete path ");' – RajeshS

+0

pb.directoryを使う代わりに、AccessDB.jarが絶対パスだと思うかもしれません。 – RobotRock

答えて

0

私がやったとき、まあ、それは私の仕事:

public class classAccessDB { 

public void GenerateAccessDB() { 
Runtime run = Runtime.getRuntime(); 
try 
{ 
ProcessBuilder pb = new ProcessBuilder("\"C:\\Program Files\\Java\\jdk1.6.0_20\\bin\\java\" -jar \"D:\\NB\\ProjFolder\\AccessDB.jar\""); 

Process p = pb.start(); 
InputStream is = p.getInputStream(); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

String resultOutput = br.toString(); 
System.out.println(resultOutput); 
} 
catch(Exception E) 
{ 
    E.printStackTrace(); 
    System.out.println(E.getMessage()); 
} 
} 
} 

をあなたの質問は私にたくさんのTHX :)を助けところで)

+0

あなたのコードは 'C:\ Program:No such file or directory'で失敗します。コマンドのすべての部分を単一のStringに貼り付けると、スペースが問題になります。それをしないでください。 –

+0

私の答えを編集しました...この方法は私と完璧に働きました。試してみてください。-1を削除することができます:P –

+0

コードは動作しますが、 1つのストリングで "アプローチ。それは常に脆いです。 –

0

代わり

ProcessBuilder pb = new ProcessBuilder(
    "C:\\Program Files\\Java\\jdk1.6.0_20\\bin\\java.exe", 
    "-jar", 
    "D:\\NB\\ProjFolder\\AccessDB.jar"); 

を試してみてください。あなたのコードでは、Javaプロセスを開始する前にD:\NB\ProjFolderというフォルダに変更したことがわかりました。しかし、絶対ファイル名を使用すると確実に機能します。

これでうまくいかない場合は、表示されるエラーメッセージを見てください。何が間違っているのかを知るはずです。

1

可能性があります.jarは実行できません。クラスをインスタンス化するか、静的メソッドを呼び出す。

JARの作成中にMain-Classエントリを追加します。をマニフェストファイルに追加します。

次に、あなたは、特定のアクションを実行するために実行可能なjarファイルを期待していた3Dデザイン製品の一つに取り組んでいる間、私はいくつかの問題に直面し、どのような私がやったことはバッチ(Windowsの場合)ファイルを作成している

Process ps=Runtime.getRuntime().exec(new String[]{"java","-jar","yourJar.jar"}); 
     ps.waitFor(); 
     java.io.InputStream is=ps.getInputStream(); 
     byte b[]=new byte[is.available()]; 
     is.read(b,0,b.length); 
     System.out.println(new String(b)); 
関連する問題