У меня есть php-файл, который хранит строку Json в $ result. Теперь у меня есть Java-программа, которая обрабатывает ее, и основной func возвращает массив строк.
Будучи новичком в Java, я не уверен, какой аргумент передать при создании конфигурации запуска. И когда я пытаюсь экспортировать исполняемый файл jar (оставляя аргументы конфигурации запуска пустыми), он говорит, что метод main не найден в классе. Я чувствую, что это как-то связано с передачей аргументов, но я не уверен, как это сделать. Извините за этот нубский вопрос.
Вот мои коды:
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);
Я считаю, что вам нужно главный() метод, который вызывается для инициализации вашего Java-класса. Затем JSON будет передан в переменную args [].
Кроме того, я бы процитировал строку JSON, которую вы отправляете через CLI.
Основной метод в Java должен выглядеть следующим образом
public static void main(String[] args){
}
класс, содержащий этот метод, называется Основной класс
и потому что main()
метод должен быть void
и для того, чтобы вернуть результат или вывод на ваш php, вы можете использовать System.out.print()
, вам нужно будет найти подход к передаче массива как результата (возможно, форматировать результат как JSON)
для запуска configuariton вы можете указать имя основного класса в самой команде
$out=shell_exec("java -jar /JiraInfo.jar com.my.package.fooClass $result");
или установите его в манифест JAR файл.
Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)
Main-Class: com.my.package.fooClass