2015-06-18 108 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)' 编辑:也许我应该写这个不同的组合,但它应该是什么样子? –