2015-06-18 149 views
1

我用jarsplice的合併我的庫和一切正常讀取參數,但是當我試圖從一個控制檯運行遊戲失敗:(無法從控制檯

該命令不起作用:

的java -Dhost =本地主機-Dport = 44444 -jar LG2.jar

通信:

抗辯n個線程 「主要」 java.lang.ArrayIndexutOfBoundsException:0在start.Game.main

這是我的主要功能:

public static void main(String[] args) { 


     AppGameContainer appgc; 

     host = args[0]; 
     port = Integer.parseInt(args[1]); 
     try { 
      appgc = new AppGameContainer(new Game(gamename)); 
      // appgc.setDisplayMode(1366, 768, true); 
      appgc.setDisplayMode(640, 360, false); 

      appgc.start(); 



     } catch (SlickException e) { 
      e.printStackTrace(); 
     } 

    } 

在此之前:

private static String host; 
private static int port; 
+2

從內存中,它們不會被髮送到您的代碼的命令行參數,但會成爲您可以從System類讀取的系統屬性(它們傳遞給JVM而不是Jar)。你可以使用'java -jar LG2.jar host = localhost port = 44444'來代替,然後你可以將它們作爲命令行參數讀取。 – MadProgrammer

+0

與'java -jar LG2.jar localhost 44444'相同,仍然不起作用。 –

+1

'java -jar LG2.jar localhost 44444'對我來說工作正常 – MadProgrammer

回答

1

爲了從這種調用讀取參數

java -Dhost=localhost -Dport=44444 -jar LG2.jar 

Y您必須使用System.getProperty("host")

+0

嗯......讓主機看起來不錯,但對於端口我有一個新的異常:線程「main」 java.lang.ArrayIndexutOfBoundsException '例外:1在start.Game.main' 我試圖 '端口= Integer.parseInt(System.getProperty(「port」));' 和 'port = Integer.parseInt(args [1]);' –

+0

您必須使用System.getProperty(「posrt」);並刪除所有其他ARGS操作線程「main」 java.lang.NumberFormatException – bhdrkn

+0

'例外:空 \t在java.lang.Integer.parseInt(來源不明) \t在java.lang.Integer.parseInt(來源不明) \t at start.Game.main(Game.java:67)' 編輯:也許我應該寫這個不同的組合,但它應該是什麼樣子? –