새로운 자바 개발자들이 프로그램을 실행할 수 있는 것은 그들의 공통된 문제를 실패 경험을 통해 오류 메시지: 기본 클래스 '또는' 로드하십시오 찾을 수 없습니다.
때문에, 무엇을, 어떻게 해야 해결하십시오 이게 무슨 뜻이죠?
첫째, 올바른 방법으로 이해해야 하는 실행하십시오 jave ' (또는' 자바브 ') 을 이용하여, 프로그램' 함장님이요 일반 syntax< sup> 1< /sup>;;; is this:
java [ <option> ... ] <class-name> [<argument> ...]
여기서 ',' 은 < option> 명령줄이 옵션 (시작으로 " " -;; 문자), ',' 는 Java 클래스 이름을 완전히 검증되었습니다 class-name> <, 및 ',' 는 주장을 < argument>, 임의의 명령행을 응용 프로그램에 전달할 된다. 두 번째 executable" " 구문, 1 - sup> < 있습니다;;; JAR 파일을 내아기마저도 설명할 수 있는 열린 bottom.< /sup>; 클래스에 대한 정규화된 이름 (펠릭스 제너) 는 자바 가상 머신 (jvm) 에 기록된 것과 같은 왔지만 관례적으로 소스 코드. 예:
packagename.packagename2.packagename3.ClassName
그러나 일부 버전의 jave '명령' 기간 슬래시 대신 사용할 수 있습니다. 예:
packagename/packagename2/packagename3/ClassName
하지만, t (있는 혼동) 파일 경로명입니다 isn& looks like a # 39 개. 단, 이 용어는 완전한 이름을 는 표준 Java 용어. 내가 방금 만든 게 아니다 최대 오류가 발생할 수 있습니다 :-) 예는 다음과 같은 것을 '명령' jave 살펴봐야 한다.
java -Xmx100m com.acme.example.ListUsers fred joe bert
이로 인해 위의 예정이다 '명령' jave 다음 작업을 수행할 수 있습니다.
잘못된 클래스 이름을 제공할 수 있는 첫 번째 원인이 되는 것입니다. (또는. 그러나 올바른 클래스 이름, 잘못된 형태를.) 위의 예는 잘못된 방법을 고려할 때, 다음과 같은 다양한 클래스 이름을 지정할 수 있습니다.
jave ListUser 이 수업은 때 같은 지역에 패키지로의 코맥스메지에스타 플레 '다음' 등 전체 classname 숨겨요 이름을 사용해야 합니다 '명령' jave. 예: jave 코맥스메지에스타 프레이리스토어
jave 코맥스메지에스타 플레스미스트우저
jave 리스테우스리자바
두 번째 발생할 수 있는 것은 올바른 클래스 이름이 있지만 '명령' 자바 클래스를 찾을 수 없습니다. 이 개념을 이해하기 위해, classpath", " 파악할 수 있어야 합니다. 이건 뭐 Oracle 문서를 통해 설명했다.
/usr/local/acme/classes/com/acme/example/Foon.class
했을 경우, 동일팔레트에 " /usr/local/acme/classes/com/acme/example"; # 39, classpath 에 다음 JVM wouldn& 클래스를 찾을 수 없다.
# wrong, FQN is needed
java Foon
# wrong, there is no `com/acme/example` folder in the current working directory
java com.acme.example.Foon
# wrong, similar to above
java -classpath . com.acme.example.Foon
# fine; relative classpath set
java -classpath ../../.. com.acme.example.Foon
# fine; absolute classpath set
java -classpath /usr/local/acme/classes com.acme.example.Foon
유라유라테이코쿠:
It 는 소스 코드 파일이 꽂으십시오 일이 가끔 가는 것을 그들은 그들의 잘못된 폴더에 남겨두십시오 아웃해야 트리에서만 또는 소스 코드 '패키지' 선언. 이 경우 IDE 를 IDE& # 39 의 컴파일러와의 우리 섹스한거요 즉시 확인할 수 있습니다. 제대로 된 도구를 사용하는 경우, 공구는 partnernet jave 구축하십시오 실행하십시오 자바스 '에서' 방식으로 점이다. 그러나 구축해보십시오 경우 자바 코드를 직접 할 수 있는 문제를 이런 식으로 doesn& 컴파일러와의 # 39, t 디이브이 결과 " .class"; in the place 파일이 없는 예상하는 수 있습니다.
많은 것을 쉽게 확인할 수 있는데, 그리고 크리스티나랑 아니다. '' 옵션을 추가한 시도하시겠습니까 스디거 jave '명령행을 (그 후 처음으로 한 것은' jave ').' 또, 이 같은 단서를 제공할 수 있습니다 어떤 것에 대해 다양한 출력입니다 로드을 클래스용 실제 문제가 있습니다. 또한, 복사, 붙여넣기 또는 비 ascii 문자를 가능한 고려해보십시오 인한 문제를 보이지 않는 웹 사이트에서, 문서 및 드릴링됩니다. 합니다,, 두 문자 또는 심볼에는 동일하게 " homoglyphs" 있었다. 그러나 aren& # 39, t.
이 ',' 구문을 jar file> java - jar <.
대체 사용되는 구문을 " executable"; JAR 파일은 다음과 같습니다.
java [ <option> ... ] -jar <jar-file-name> [<argument> ...]
예:
java -Xmx100m -jar /usr/local/acme-example/listuser.jar fred
예:
내 클래스뿐만 여기에 있다.
D:\project\com\cse\
완전한 내 기본 클래스 이름 입니다.
com.cse.Main
그래서 내가 'cd' 백됩니다 루트 프로젝트 디렉터리입니다.
D:\project
그럼 실행하십시오 'jave' 명령:
java com.cse.Main
, 및 주요 방법으로 정의할 경우 기본 클래스 a '패키지' 는 전체 이름을 사용하여 합니다 그 위에 실행하십시오 계층적이지 디렉터리인 클래스 ('파커겐임.맹클레스나미').
Solaris. 좁히어 는 소스 코드 파일 (맹자자바):
package com.test;
public class Main {
public static void main(String[] args) {
System.out.println("salam 2nya\n");
}
}
이 코드를 실행하기 위한 '패키지' 를 '' ./com/test/Main.Java 디렉토리에는 맹자클레스 같은 곳에 두어야 합니다. 루트 디렉터리에 jave 콩스테스트롬맹 사용하여 '및'.
나에게 어떤 도움을 준 것은 명령줄의 classpath 지정, 예를 들면 다음과 같습니다.
새 폴더 만들기 ',' C:\temp
'에서' 을 (를) 다음과 같은 클래스 파일 생성 트럼퍼자바 c:\temp 항목이없습니다:
public class 임시 { public static void main (구체화하십시오 args []) { 시스템지우트리프린틀린 ([0] args). } }
자바스 트럼퍼자바
java - classpath C:\temp 임시 헬로!
이에 따라 오류 메시지 (", 또는 로드 주 class" 찾을 수 없습니다.), 두 가지 범주의 문제:
예를 들면 다음과 같습니다.
public class YourMain extends org.apache.camel.spring.Main
낙타 봄 포함되어 있지 않은 경우, 이 오류 보고됩니다.
이 명령을 사용합니다.
java -cp . [PACKAGE.]CLASSNAME
예: 이 경우 classname 헬오클레스 헬오자바 작성한 후 아래 명령:
java -cp . Hello
그 속에는 패키지로의 헬오자바 파일의 경우 코맥더모 명령 아래
java -cp . com.demo.Hello
Jdk 8 클래스 파일이 있는 여러 차례 이 같은 폴더에 발생 했지만, 이러한 이유로 '명령' 자바 클래스 있을 것으로 기대하고 있다. '' 를 얹는 cp 시행하십시오 참조로는 현재 폴더로 classpath.
스티브야 C& # 39 의 오토메이티드 닫히지만 가능한 경우가 있지만, 때로는 아주 잘 클래스 또는 com/downloads/global/corporate/iar/esg_prosupport. 로드되었는지 여부를 결정할 수 있는 쉬운 않을 수 없습니다. Use "java - 스디거" (이후 jdk&, nbsp; 7). 이 좋은 힌트를 제공하는 를출력합니다 stacktrace 가 어떤 메시지 "기본 클래스 또는 로드 찾을 수 없습니다" 라는 것이다.
예를 들어, 다른 클래스를 사용하는 수 있다는 점을 찾을 수 없는 너 기본 클래스 및 기본 클래스 로드되었는지 막을 수 있다.
예를 들어 있습니다.
>. ? Classpath 기본 클래스 또는 로드 찾을 수 없습니다.
[1]: http://en.wikipedia.org/wiki/Notepad_% 28software% 29
난 이미 발견된 동일한 문제가 마지막으로 내 실수:) 내가 이 명령을 사용하여 올바르게 컴파일하기를 및 통했다.
javac -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode.java
하지만 이 명령을 작동하지 가져다줄래요 (또는 로드 기본 클래스 ',' 크레코드 찾을 수 없음).
java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode
마지막으로 # 39, & # 39, :& 추가했어야 루이구요. 문자 클래스 경로 및 끝 부분의 문제가 해결되었다.
java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar:" qrcode
클래스 파일을 location:* C:\test\com\company
파일 이름:* 맹자클레스
이름:* 코맥컴파니스망 정규화된 클래스
명령행을 command:*
java -classpath "C:\test" com.company.Main
참고 이 클래스 경로 \com\company 포함되어 있지 않습니다.
내가 이 문제를 해결하려는 좋은 시간을 보냈다. 그러나 문제는 내가 내 classpath 생각해봤죠 거라고 설정을 잘못 입력되었는지 짐작이지만요.:
java -cp C:/java/MyClasses C:/java/MyClasses/utilities/myapp/Cool
대신:
java -cp C:/java/MyClasses utilities/myapp/Cool
그 의미를 완전히 검증되었습니다 생각해봤죠 전체 경로 이름을 포함시키십시오 대신 전체 패키지 이름.
다음은 Windows 사용자의 모든 질문에 대한 전달됩니까 보인다. Mac 용 ',' 는 ':', 'classpath 분리자를 없습니다. 클래스 경로 설정 오류로 ',' 이 될 수 없는 어려운 경우 발견하십시오 사용하여 버린 후 Windows 와 Mac 에서 왔다.
다음은 해당 Mac 명령:
java -classpath ".:./lib/*" com.test.MyClass
여기서 '와' '는' 콩스테스트 예제에서와 숨겨요 lib 폴더를 classpath 에 있다.