2009-12-21 5 views
1

명령 줄에서 내 프로그램을 실행 질수내가 로직 클래스의 인스턴스를 생성하는 주요 방법이

public static void main(String[] args) { 
     try { 
      Logic logic = new Logic(args[0]); 
      ....... do some stuff here 

     } catch (Exception e) { 
      System.out.println("Error Encountered Details: " + e); 
     } 
    } 
것은이 프로그램이 실행하는 CSV 파일을 필요로, 나는 같은에 넣어 가지고있다

.jar 파일과 같은 디렉토리하지만 난 명령 줄에서 실행할 때 난 그냥 내가 잘못

감사

+0

당신이에있을해야합니다 :

는 덧붙여 당신은 일반적으로 전달 된 인수의 수를 확인하고 같은 좀 더 일관성 오류 메시지를 인쇄하여이 방지한다 최소한 코드의 어딘가에 접근하려고 노력하십시오. 당신이 게시했다면 사람들은 당신을 더 잘 도울 수 있습니다. –

답변

7

을 뭐하는 거지 java.lang.arrayindexoutofbounds (0) 오류를

를 얻을 수 당신은 .csv 파일 이름 (args[0]에있는 갈 것이다) 공급하지 않는 것 같습니다

java -cp {name_of_jar} {name_of_class} {name_of_csv} 

: 귀하의 명령 줄은 다음과 같은 모양입니다?

위의 예에서는 메인 클래스가 .jar 매니페스트에 정의되어 있지 않다고 가정합니다. 그것은 경우, 다음 사용

java -jar {name_of_jar} {name_of_csv} 

그것은 또는 유사 ".CSV 파일 이름을 누락"과 같은 메시지를 BTW, 필요한 정보에 대한 args[] 배열을 확인하고 생성하는 좋은 방법입니다 불쾌한 예외/스택 추적을 피하십시오.

1

프로그램에 인수를 전달해야합니다.

java -jar MyAppJar myFile.csv 

: 당신은 같은 명령 줄 뭔가 응용 프로그램을 호출 할 필요가

java -jar ... somearg 
1

: new Logic(argv[0])은 프로그램과 같이 적어도 하나 개의 명령 행 인수를 기대하고 있음을 나타냅니다. 파일 이름을 제공하지 않았기 때문에 오류 메시지가 나타납니다.

1

args [0]은 명령 행에 넣지 않으면 인덱스를 벗어난다. 당신의 명령을

java -jar myjar.jar c:\myfile.csv 

인수 [0] 다음 C를 포함합니다 ... 다음과 같아야합니다 : \ myfile.csv하고 그 위치에 대해 걱정할 필요가 없습니다.

1

args에 항목이 있는지 확인하고 있지 않습니다. args에 액세스하기 전에 args에 내용이 있는지 항상 확인하십시오. . . 다른 사람의 PARAMS을 전달하는 방법을 대답했다 ... 당신은 응용 프로그램이 JAR 패키지가 아닌 경우,

$ java -jar yourApp.jar csvFileName.csv 

처럼 무언가로 프로그램을 호출하거나 할 필요가

1

,

$ java com.yourco.YourMainClass csvFileName.csv 

args 배열이 주 메서드로 전달 되었기 때문에 ArrayIndexOutOfBoundsException이 발생하는 이유는 크기가 0이므로 첫 번째 요소가 없기 때문입니다. 프로그램에 매개 변수를 전달하지 않으면 이런 일이 발생합니다.프로그램이 외부 파일을 필요로하는 경우

public static void main(String[] args) 
{ 
    // Check mandatory argument(s) passed in 
    if (args.length < 1) 
    { 
     System.err.println("Must supply filename of CSV input as first argument!"); 
     System.exit(1); 
    } 

    // rest of method, now you know you args[0] exists... 

} 
관련 문제