2009-07-27 3 views
14

나는 내 컴퓨터 어디에서나 실행할 수 있기를 원하는 자바 프로그램을 가지고있다. Cygwin 명령 프롬프트에서 실행하고 싶습니다. Java 프로그램을 호출하는 스크립트를 만들었습니다. 클래스 경로에 자바 프로그램의 위치를 ​​추가했고, 자바 프로그램의 디렉토리에서 스크립트를 실행할 때 스크립트가 작동합니다. 내가 다른 디렉토리에서 실행하려고 할 때, 내가 얻을 :다른 디렉토리에서 Java 프로그램을 실행하려면 어떻게해야합니까?

#!/bin/sh 
CWD=`dirname "$0"` 
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram 

다음에 자바 라인을 변경 :

java -cp "$CWD/classes;$CWD/classes/commandprogram;$CWD/lib/AJarFile.jar" CommandProgram 

은 생산이 내 스크립트

java.lang.NoClassDefFoundError: commandprogram/CommandProgram 

같은 결과.

+0

당신이 사람들에게 –

+0

당신이 자바 commandprogram/CommandProgram.class 또는 Java -jar commandprogram/CommandProgram을 수행 할 필요가 없습니다 ... 보는 위치에 대한 더 나은 아이디어를 줄 것이다, 스크립트를 게시 할 수 .항아리? –

+0

is '경로 구분 기호로 콜론 (:) 대신 사용한 세미콜론 (;)? –

답변

3

그냥 내가 생각할 수있는 모든 것을 시도 후, 나는 명령과 톱을 반향 Cygwin 경로와 Windows 경로가 섞여있다. 대신 "/ cygdrive/C/프로그램 \ 파일/..."

:

#!/bin/sh 
CWD=`dirname "$0"` 
CWD=`cygpath -w "$CWD"` 
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram 

그런 다음 CWD는 "\ 프로그램 파일 \ ... C"로 변경 :이 솔루션은에 스크립트를 변경했다

이전에이 문제가 발생하여 cygpath -w 솔루션으로 해결했지만 스크립트를 약간 변경하고 경로 문제가 다시 발생했음을 알지 못했습니다.

20

예를 클래스 패스에 디렉토리를 추가

java -classpath commandprogram CommandProgram 

또는

java -classpath directory_to_program Program 
1

당신이 아닌 슬래시 패키지를 구분하는 점을 사용해야합니다.

자바 -cp "$ CWD/클래스를, $ CWD/lib 디렉토리/AJarFile.jar"commandprogram.CommandProgram

+0

/너무 효과적입니다. 스크립트가 디렉토리에있을 때 스크립트가 작동한다는 점을 명심하십시오. – Swoogan

-4

자바 파일을 실행하는 일반적인 방법은 당신이 cmd를에서 다음을 사용할 수 있습니다, 당신은 D:로 다른 디렉토리에 파일을 저장하는 경우 Java/Bin 폴더에 저장하고 cmd

C:\Program Files\Java\jdk1.7.0_05\bin> javac filename.java && java classname 

을 실행하는 것입니다 프롬프트 :

D:\Project java> set path=%path%;C:Program Files\Java\jdk1.7.0_05\bin 
+7

Java 파일이나 클래스 파일을 Java 'bin' 디렉토리에 저장하는 것은 사실 매우 드문 일이므로 피해야합니다. 자바'bin' 디렉토리는 자바 자신의 바이너리 파일과 * nothing * else 디렉토리입니다. – Mac

관련 문제