2016-06-26 4 views
0

$結果にJson文字列を格納するPHPファイルがあります。私は今、それを処理するJavaプログラムを持っており、メインfuncは文字列配列を返します。 Javaに新しいので、実行コンフィギュレーションを作成するときにどの引数を渡すべきかわかりません。そして、runnable jarをエクスポートしようとすると(run configの引数は空のままです)、mainメソッドがクラスに見つかりません。私は引数の渡しとは何かを感じますが、それをどうやって行うのかはわかりません。このnoobの質問に申し訳ありません。 は、ここに私のコードです:phpからjavaメインメソッドにJSON文字列を渡してコンフィグレーションを実行する方法

package jiraBurnDown; 

public class JiraCurrentSprintBurnDownDataAttributes { 

    public long _startTime = 0; 
    public long _endTime = 0; 
    public String sprintResponse; 
    public String _statisticsField = ""; 
    public Map<String, JSONArray> _changes = new HashMap<String, JSONArray>(); 
    public Map<String, IssueState> _changesByIssue = new HashMap<String, IssueState>(); 

    public class IssueState { 
     public boolean isInSprint = false; 
     public Double estimatedWork = 0.0; 

     public IssueState(boolean isInSprint, Double estimatedTime) { 
      this.isInSprint = isInSprint; 
      this.estimatedWork = estimatedTime; 
     } 

     public String[] main(String sprintResponse) { 

      String res[]=null; 

      JSONObject obj = (JSONObject) JSONValue.parse(sprintResponse); 
      if (obj != null) { 
       //createEmptySeries(); 
       res=extractAllInfo(obj); 
      } 
      else 
       System.out.println("Not Working "); 
      return res; 


     } 

    } 


    private String[] extractAllInfo(JSONObject obj) { 
     String statisticField =extractStatisticsFieldName(obj); 
     String time=extractStartAndEndTime(obj); 
     String changes=extractChangesInfo(obj.get("changes")); 
     String workData=extractAndSaveBaseLine(obj.get("workRateData")); 
     String scopeChanges=extractAndSaveScopeChange(); 
     String[] info=new String[5]; 
     info[0]=statisticField; 
     info[1]=time; 
     info[2]=changes; 
     info[3]=workData; 
     info[4]=scopeChanges; 

     return info; 
    } 

    private String extractStatisticsFieldName(JSONObject obj) { 
     Object rawObj = obj.get("statisticField"); 

     if (rawObj != null && rawObj instanceof JSONObject) { 
      _statisticsField = ((JSONObject) rawObj).get("name").toString(); 
      //addPoint(DataAttributes.DEFAULT_SERIES_NAME, _statisticsField); 
     } 
     return _statisticsField; 

    } 
//and other functions to process the JSON obj 

と私のPHPファイルは

$result=curl_exec($ch); 
    curl_close($ch); 
    $result=json_decode($result, true); 
    $result=json_encode($result); 
    $out=shell_exec("java -jar /JiraInfo.jar $result"); 
    var_dump($out); 

答えて

0

である私は、あなたのJavaクラスを初期化するために呼び出されmain()方法が必要と考えています。 JSONはargs []変数に渡されます。

さらに、CLI経由で送信しているJSON文字列を引用します。

0

、Javaの主な方法は、この

public static void main(String[] args){ 
} 

のようになります。このメソッドを含むクラスが メインクラスと呼ばれ、main()方法はvoidこと、および戻すために必要があるため、結果またはあなたのPHPに出力、あなたはSystem.out.print()を使用することができます、結果として配列を渡す方法を把握する必要があります(多分JSONとして結果をフォーマットする)

実行configuariton 0

あなたはコマンド自体

$out=shell_exec("java -jar /JiraInfo.jar com.my.package.fooClass $result"); 

またはmanifest of JARファイルに設定するには、メインクラス名を挙げることができます。

Manifest-Version: 1.0 
Created-By: 1.7.0_06 (Oracle Corporation) 
Main-Class: com.my.package.fooClass 
+0

私はそれを行い、マニフェストファイルは正しいクラスを示しています。しかし、私はPHPページを読み込むときに何も起こりません。 objが正しくjavaコードに渡されているかどうかを確認する方法はありますか? – user3387677

+0

あなたはこれを1ステップずつ実行することができます。例えば、Javaアプリケーションは、渡されたデータの長さを返します(system.out)。これは 'main()'の中で 'args [0]'を使って読み取ることができます。適切な長さ、次に次のステップを踏み出す... Javaアプリケーションのファイルにいくつかのログを追加してみてください。それはプログラムのトレースに役立ちます – Yazan

関連する問題