2015-01-16 3 views
-4

배경 : eclipse가 아닌 ec2 인스턴스에서 실행 중입니다.외부 Jar 종속성이있는 경우 어떻게 .class 파일을 생성합니까? Javac이 작동하지 않습니다.

외부 Jar 종속성이있는 Java 프로그램이 있습니다. 이 자바 프로그램을위한 실행 가능한 jar 파일을 만들고 싶습니다. (이 jar 파일에 외부 jar 파일을 패키지화하여 케이크 위에 장식 할 수 있습니다)

문제점은 저에게 java cf 또는 cmf 명령을 사용하는 것입니다. .class 파일이 있어야합니다. 하지만 javac HKP.java를 시도하면 "xyz가 존재하지 않거나 기호를 인식 할 수 없다"는 오류가 발생합니다. 외부 항아리 종속성에 대한 생각이 없기 때문입니다.

javac -sourcepath/home/ec2-user/apps/HKP/lib/HKP.java를 시도했지만 이전과 완전히 똑같은 오류가 발생합니다.

EDIT 나는 javac -classpath file1.jar, file2.jar, file3.jar를 시도했다. HKP.java - ";" 사이. 두 반환 오류 모두 -bash file2.jar 명령을 찾을 수 없으므로 인수를 계속 사용하는 대신 bash는 여러 개의 jar 파일을 명령으로 인식합니다. 이것은 내가 여기에 게시하게 된 초기 문제입니다.

도움을 주시면 감사하겠습니다. 고맙습니다!

+0

그리고 클래스 패스에 항아리를 추가 했습니까? – chrylis

+0

제대로 이해했다면 코드와 외부 jar가 포함 된 새로운 jar 파일을 만들고 싶습니다. 맞습니까? – MaxZoom

+0

@chrylis 예, 4 개의 jar 파일은 클래스 경로에 언급 된 lib/디렉토리에 있으며 개별적으로 추가하려고했습니다. 고맙습니다! – SparkKafkaSetup

답변

-2

시스템 변수에 경로를 추가하고 컴퓨터를 다시 시작하십시오.

+0

시스템 변수는 어디에 있습니까? 또한 이것은 내 컴퓨터에 일식보다는 ec2 인스턴스에서 실행됩니다. 고맙습니다! – SparkKafkaSetup

+0

그는 -cp와 함께 지정하는 대신 환경 변수 (CLASSPATH)를 설정하는 것을 의미합니다. – eckes

+0

방금 ​​컴퓨터를 다시 시작할 필요가 없습니다. – MaxZoom

1

Java 소스 파일을 클래스로 컴파일하려면 해당 코드에서 사용되는 모든 클래스를 컴파일러의 클래스 경로에 제공해야합니다.

클래스가 (이미 컴파일 된) 외부 JAR에서 오는 경우 일반적으로 에 : (Linux의 경우)으로 구분 된 JAR 파일 목록을 지정하여 수행합니다. 그러나 IDE 또는 적어도 maven 빌드 파일을 사용하는 것에 대해 실제로 생각해야합니다 (이점이 있습니다.이 파일은 해당 JAR을 다운로드 할 수도 있습니다).

둘 다 (Eclipse IDE 및 Maven build system) 쉽게 외부 클래스가있는 ueber-jar를 생성하여 쉽게 실행할 수 있습니다.

+0

pom 파일과 maven을 사용하여 외부 jar 파일을 가져 왔습니다. 그것은 내 자바 프로그램을위한 jar 파일을 만들었다. 단, java -jar 명령을 사용하여 해당 jar 파일을 실행할 수 없습니다. 오버플로에 대한 지침에 따라 pom 파일을 수정했지만 운이 없었습니다.그래서 내가 명백한 방법을 시도하고있다. 감사합니다 – SparkKafkaSetup

+0

개별적으로 외부 jar 파일을 추가하여 폴더에 넣은 다음 클래스 경로에 지정하는 방법을 시도했습니다. 둘 다 효과가 없습니다. 시간을내어 도와 주셔서 감사합니다! – SparkKafkaSetup

+0

한 번에 한 가지 대답 만 물어보십시오. 이 대답은 Java 컴파일 방법에 관한 것입니다. 그러나 Maven으로 빌드하는 방법에 대한 링크를 추가했습니다. – eckes