클래스 경로는 Linux에서 작동하지 않습니다.
누구나이 명령이 Windows에서 잘 작동하는 이유를 알고 있지만 Linux에서는 ClassNotFoundException game.ui.Main이 발생합니다.
java -cp ".;lib/*" game.ui.Main -Xms64m -Xmx128m
내 폴더 구조는 다음과 같습니다. lib /-Jars game /-클래스 파일
이것은 최신 Java 6입니다.
클래스 경로 구문은 OS에 따라 다릅니다. 에서 위키 백과 :
파일 시스템과 밀접하게 관련되어 있기 때문에 명령 줄 클래스 경로 구문은 운영 체제에 따라 다릅니다. 예를 들면 :
모든 Unix 유사 운영 체제 (예 : Linux 및 Mac OS X)에서 디렉토리 구조에는 Unix 구문이 있으며 콜론 ( ":")으로 구분 된 별도의 파일 경로가 있습니다.
Windows에서 디렉토리 구조에는 Windows 구문이 있으며 각 파일 경로는 세미콜론 ( ";")으로 구분해야합니다.
클래스 경로가 매니페스트 파일에 정의되어있는 경우에는 적용되지 않습니다. 여기서 각 파일 경로는 운영 체제에 관계없이 공백 ( "")으로 구분되어야합니다.
세미콜론을 콜론으로 변경해보십시오.
CLASSPATH 구분 기호는 플랫폼에 따라 다르며 java.io.File.pathSeparatorChar가 반환하는 문자와 동일합니다 .
Windows (예 : cygwin) 및 Linux 두 플랫폼에서 실행되는 스크립트에서 클래스 경로를 사용할 때 경로도 중요합니다. 이렇게 할 때 클래스 경로에 대해 이와 같은 함수를 포함합니다. '-w'옵션이있는 'cygpath'명령은 경로를 Windows 스타일 경로로 변환합니다. 따라서이 예제에서 "/home/user/lib/this.jar"는 "C : \ Cygwin \ home \ user \ lib \ this.jar"와 같은 형식으로 변환됩니다.
#!/bin/bash
function add_java_classpath() {
local LOCAL1=$1
if [ "$OSTYPE" == cygwin ]; then
LOCAL1="$(cygpath -C ANSI -w $LOCAL1)"
fi
if [ -z "$JAVA_CLASSPATH" ]; then
JAVA_CLASSPATH="$LOCAL1"
elif [ "$OSTYPE" != cygwin ]; then
JAVA_CLASSPATH="${JAVA_CLASSPATH}:$LOCAL1"
else
JAVA_CLASSPATH="${JAVA_CLASSPATH};$LOCAL1"
fi
}
add_java_classpath /home/user/lib/this.jar
add_java_classpath /usr/local/lib/that/that.jar
java -cp "${JAVA_CLASSPATH}" package.Main $@
Windows :
java -cp file.jar;dir/* my.app.ClassName
리눅스 :
java -cp file.jar:dir/* my.app.ClassName
상기 :
- Windows 경로 구분자는
;
- Linux 경로 구분자는
:
- Windows에서 cp 인수에 공백이 없으면 따옴표는 선택 사항입니다.
참고 URL : https://stackoverflow.com/questions/4528438/classpath-does-not-work-under-linux
'Programing' 카테고리의 다른 글
구속 레이아웃 수직 정렬 중심 (0) | 2020.12.11 |
---|---|
새로운 프로그래머가 이해할 수있는 구문 분석이란 무엇입니까? (0) | 2020.12.11 |
모든 기록 삭제 (0) | 2020.12.11 |
소켓을 통한 Java 송수신 파일 (byte []) (0) | 2020.12.11 |
HTTP 요청에서 JSON 데이터를 다시 받기 (0) | 2020.12.11 |