2014-10-03 3 views
0

다른 디렉토리에서 Java 파일을 실행할 수있게 해주는 bash 스크립트를 작성하고 있지만 이미 컴파일 된 Java 파일이 실행되지 않는 이유를 모르겠습니다. 관련 코드 :내 Java 파일이 실행되지 않는 이유 (bash)

#!/bin/bash 

if [ "$1" == "JavaAdd" -o "$1" == "JavaAddBad" ] 
then 
    echo "Testing $1" 
    `java ../Source/Java/"$1"` 

else 
    echo "Invalid File" 
fi 

이 스크립트는 스크립트 디렉토리에 있습니다. 따라서 두 하위 디렉토리 Script와 Source는 같은 디렉토리에 있습니다. 내 컴파일 된 java 파일은/Source/Java에 있습니다.

+2

'man java'해야합니다. –

답변

3

매개 변수는 java이며 경로 또는 파일 이름이 아닙니다.

클래스 이름입니다.

클래스 경로을 지정하여 Java를 찾을 위치를 알려줄 수 있습니다.

java -cp ../somewhere/classes:../../somewhereElse/x.jar com.me.MyClass 

클래스는 클래스 경로의 모든 위치에서 검색됩니다. 각 위치는 디렉토리 또는 jar 파일 일 수 있습니다.

클래스 경로에 지정한 디렉토리는 클래스 패키지 계층 구조의 루트에 놓아야합니다. 따라서 클래스가 com.me.MyClass이고 파일이 ../somewhere/classes/com/me/MyClass.class 인 경우 ../somewhere/classes (하위 디렉토리가 아님)을 포함해야합니다.

또한 클래스 경로를 포함해도 프로그램의 작업 디렉토리는 변경되지 않습니다. 시작한 디렉토리를 기준으로 파일을 열 때 상대 경로를 해결합니다 (클래스 파일이없는 위치와는 완전히 관련이 없음).

+0

내가 아는 경우 java JavaAdd 자바 파일과 동일한 디렉토리에있을 때 프로그램이 실행됩니다. 그렇다면 다른 디렉토리에있을 때 왜 그것을 실행할 수 없습니까? – guevarak12

+0

수업이 어디에 있는지 말하지 않으면 수업을 어떻게 찾을 수 있습니까? 기본적으로 현재 디렉토리 만 찾습니다. – Thilo

+0

클래스 경로가 어디에 있는지 어떻게 알 수 있습니까? – guevarak12

관련 문제