2012-03-28 14 views
1

私はC#を使用してKinect用のプログラムを開発しています。 C#には、キーストロークやマウスの動きをシミュレートするためのJavaのロボットと同じようなものはありません。そのためにJavaを使用しています。現時点では、私は.jarファイルを作成し、C#アプリケーションからそれらを実行しようとしています(しかし、もっと良い方法があるとは思いますが)。私はこれを行う方法は、私のC#コードでこの行を置くことである:.jarはC#プログラムから起動したときには実行されません

System.Diagnostics.Process.Start("CMD.exe", java -jar C:\\Users\\Me\\RobotProgram.jar"); 

これは小さな、基本的なC#アプリケーションで正常に動作します:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      System.Diagnostics.Process.Start("CMD.exe", "/c java -jar C:\\Users\\Me\\RobotProgram.jar"); 
     } 
    } 
} 

しかし、それが使用する、より複雑なプログラムでだときKinectカメラは動作しません。コンソールが "VM java/lang/NoClassDefFoundError:java/lang/Objectの初期化中にエラーが発生しました"というメッセージが表示されます。

+0

を発見していないJavaの標準ライブラリが正しくロードされていないように見えます。それをJavaインタプリタのスイッチにも追加してみてください。 – m0skit0

+0

申し訳ありませんが、あなたはそれをJavaインタプリタのスイッチに追加すると言ったらどういう意味ですか?何を追加しますか? – user1002973

答えて

0

Javaプロジェクトが、作業ディレクトリで必要なファイルを探している可能性があります。起動する前に作業ディレクトリを設定してみてください。

Directory.SetCurrentDirectory("C:\\Users\\Me"); 
System.Diagnostics.Process.Start("CMD.exe", "/c java -jar C:\\Users\\Me\\RobotProgram.jar"); 
+0

VMが探しているファイルは、基本クラス(java.lang.Objectなどのエラーメッセージ参照)です - 作業ディレクトリに変更しても問題は解決しません – Attila

0

あなたはJAVA_HOME環境変数が複雑なプログラムが動作している環境で正しく設定していますか?でも、基本クラスとして空/間違っJAVA_HOMEへ

エラーポイントが

+0

私はこれが何を意味するのか分かりません。私の標準的なJava環境変数は適切に設定されていますが、複雑なプログラムが実行されている環境でセットアップしていることを理解しているかどうかはわかりません。これを確認するにはどうすればよいですか? – user1002973

+0

アプリケーションから 'echo%JAVA_HOME%>'のようなコマンドを実行できます( ''は 'echo'コマンドの出力をキャプチャするファイルへのパスです - '>'はリダイレクト演算子です) 'java'コマンドと同じように、標準出力を取り出してファイルにリダイレクトします)。そのファイルの内容を、環境変数 'JAVA_HOME'の値と比較してみましょう – Attila

+0

申し訳ありませんが遅い場合は試してみましたが、"%JAVA_HOME% "をテキストファイルに出力しました。 – user1002973

関連する問題