다음과 같이 명령 줄 구문을 사용하여 Java 기반 도구를 실행하려고합니다. java -cp archive.jar archiveFolder.theMainClassName.I 클래스를 검색하고 있는데 , 메인 클래스 인 "theMainClassName"은 archive.jar에 있고, 입력시 주어진 archiveFolder에는 클래스가 보이지 않는 오류가 계속 발생합니다. 아무도이 문제에 관한 아이디어가 있습니까? 사전에 감사합니다Jar 아카이브에서 클래스를 읽을 때 Java 명령 줄 문제가 발생했습니다.
답변
이 가 작업을 수행하는 작업에 대한 구체적인 예이다 tuation.
이 코드를 가져 와서 MainClass.java
파일에 저장하십시오. (. 나는 보통은 물론, 패키지에 맞게 소스를 준비 거라고 디렉토리 나중에 src
라고 가정했습니다.)
package archiveFolder;
public class MainClass
{
public static void main(String[] args)
{
System.out.println("I'm MainClass");
}
}
그런 다음 각 명령을 실행
# Compile the source
javac -d . src/MainClass.java
# Build the jar file
jar cf archive.jar archiveFolder
# Remove the unpackaged binary, to prove it's not being used
rm -rf archiveFolder # Or rmdir /s /q archiveFolder on Windows
# Execute the class
java -cp archive.jar achiveFolder.MainClass
결과 :
I'm MainClass
jar 파일을 어떻게 구성합니까? 적절한 패키지에 코드가 있습니까? 종속 클래스 (고정 부재)가 발견되지 않는 경우
아마 java -jar archive.jar
으로? 물론
, 그것은
당신이있어 정확한 메시지를 제공해야합니다, 그것은 더 많은 빛을 흘릴 수 ... 올바른 클래스에 매니페스트 점을 가정한다.
EDIT : jar 매니페스트 파일에서 응용 프로그램 진입 점 (기본 클래스)을 설정하는 방법은 Working with Manifest Files: The Basics을 참조하십시오.
package archiveFolder
당신은 선언 된 패키지와 같은 디렉토리 구조로 클래스 파일이 필요합니다
이것은 실제로 질문에 대답하지 않습니다 ... 그는 항아리를 실행하려고 시도하지 않고 항아리의 특정 클래스를 실행하려고합니다. 거의 확실하게 포장 문제입니다. –
이 질문에 대한 특정 질문에 답변하지 않는다는 것에 동의하지만 다른 사람들은 자신의 매니 페스트에 문제가있을 수 있습니다. 그들은이 질문을 가로 질러 달릴 것입니다. 그래서 나는이 대답을 가질 가치가 있다고 생각합니다. –
@Bill 사실입니다. –
합니까 theMainClassName 클래스 상단에 다음과 같은 패키지 라인을 가지고있다. 당신이 뭔가를했다 그래서 경우 :
는org/jc/tests/TestClass.class
의 소스 파일은 다음과 같이해야합니다 :
이package org.jc.tests;
public class TestClass {
public static void main(String[] args) {
System.out.printf("This is a test class!\n");
}
}
는 그런 다음 jar 파일을 생성하고 명령 줄에서 실행하려면 다음 사용할 수 있습니다 (현재 디렉토리를 가정하는 것은) 단지 조직 위, 최상위 수준에있다 : 당신이 당신의 자신의시를 비교할 수 있도록
다음$ jar -cf testJar.jar org/jc/tests/*.class
$ java -cp testJar.jar org.jc.tests.TestClass
보통이 발생 -의 log4j를 사용해,이 같은
public class MyClass {
private static Logger log = Logger.getLogger("com.example");
}
이유는 고정 부재의 초기화의 일부로서 이해 될 수 있다는 클래스 로딩 - 클래스를 사용 가능하게하지 못하게하는 오류 (로드 가능)로 인해 설명 된 오류가 발생합니다.
public class MyClass {
static {
// <b>any</b> error caused here will cause the class to
// not be loaded. Demonstrating with stupid typecast.
Object o = new String();
Integer i = (Integer) o;
}
}
내가 다른 사람이 여기에 몇 가지 일반적인 물건을 덮여 있다고 생각 :
정적 생성자는 또 다른 가능한 이유입니다. 항아리를 항아리에 넣고 수업이 열거되어 있는지 확인하십시오. 또한 클래스가 public이고 메서드가 "public static void main (String [] arg)"인지 다시 확인합니다.
- 1. .jar 라이브러리의 Java 명령 줄 문제
- 2. DB에서 읽을 때 nhibernate 세션 문제가 발생했습니다.
- 3. 매니페스트 파일의 내용을 읽을 때 문제가 발생했습니다.
- 4. 텍스트 파일을 읽을 때 문제가 발생했습니다.
- 5. 데이터베이스에서 html을 읽을 때 문제가 발생했습니다.
- 6. Windows에서 Java -cp 문제가 발생했습니다.
- 7. matlab에서 Java 클래스를 사용하여 청소 문제가 발생했습니다.
- 8. Java 클래스를 가져 오는 동안 문제가 발생했습니다.
- 9. Nmap.exe를 시작할 때 Java Runtime.exec() 문제가 발생했습니다.
- 10. JNI에서 tomcat 클래스를 호출 할 때 문제가 발생했습니다.
- 11. 파일을 읽을 때 java.lang.NullPointerException이 발생했습니다.
- 12. Java 명령 줄?
- 13. Junit 클래스를 컴파일하는 중 문제가 발생했습니다.
- 14. Java 응용 프로그램을 실행하는 중 문제가 발생했습니다.
- 15. scala 파일에서 실행 가능한 jar 파일을 만들 때 문제가 발생했습니다.
- 16. classpath가 지정된 명령 줄에서 jar 클래스를 실행하는 방법
- 17. 메뉴가있는 명령 줄 Java 프로그램
- 18. Java 명령 줄 인수의 공백
- 19. XSLT 줄 바꿈 문제가 발생했습니다.
- 20. SocketChannel 연결에서 Java 문제가 발생했습니다.
- 21. .jar 파일을 실행하려고 할 때 NullPointerException이 발생했습니다.
- 22. HTC Desire Z의 inputsream에서 읽을 때 Android 블루투스 문제가 발생했습니다
- 23. Google지도 검색에서 json 파일을 읽을 때 문제가 발생했습니다.
- 24. Unix에서 Java 명령 줄 인수 읽기
- 25. open_basedir에서 PHP가 읽을 수없는 문제가 발생했습니다.
- 26. FPDF의 MultiCell에서 줄 바꿈 문제가 발생했습니다.
- 27. 셀레늄 테스트 명령 줄
- 28. vim 명령 줄 창에서 일반 모드로 돌아갈 때 오류가 발생했습니다.
- 29. Java 애플리케이션에서 가져 오기에 이상한 문제가 발생했습니다.
- 30. jruby에서 Java 클래스를 사용하는 데 문제가 있습니다
'jar tf'명령을 실행하고 결과를 게시하십시오. 사용중인 정확한 명령 줄과 java 명령이 출력 한 정확한 오류 메시지를 잘라내어 붙여 넣으십시오. –
erickson