2010-08-12 2 views
0

Netbeans 6.8에서 내 응용 프로그램을 빌드했습니다. 응용 프로그램에는 타사 제품 (예 : SQL Server 및 JIDE 용 Microsoft 데이터베이스 드라이버)에 대한 다양한 참조가 포함되어 있습니다.Netbeans로 컴파일 된 Java 응용 프로그램 배포 - 제 3 자 클래스를 찾을 수 없음

컴파일하면 dist 폴더가 만들어져 위치에 xcopy하면 작동 할 것이라고 생각했습니다.

응용 프로그램을 실행할 때 JIDE 클래스에 대한 양식의 참조를 발견하면 응용 프로그램에서 오류를보고 종료합니다.

기본적으로 스택 추적은 다음과 같습니다 내 jar 파일이있는 폴더의 lib 폴더에 복사 한 JAR 파일이

java.lang.reflect.InvocationTargetException
Caused by: java.lang.ClassNotFoundException: com.jidesoft.gantt.PeriodBackgroundPainter at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source)

.
\ MyApp를 \ MyJar.jar
\ MyApp를 \ lib 디렉토리 \ 모든 응용 프로그램 항아리

그러나, 나는 C에 lib 폴더의 내용을 복사 : \ 프로그램 파일 \ 자바 \ JRE6 \ lib 디렉토리 \ 내선 다음 모든 작업 벌금.

내가 누락 된 항목이 있습니까? 나는 비스타 SP2에서 실행 중이다.

JIDE 구성 요소와 동일한 참조로 새로운 간단한 프로젝트를 작성하여 컴파일했습니다. jar 파일을 실행하면 응용 프로그램이 실행되고 구성 요소가 표시됩니다. 프로젝트들 사이에서 볼 수있는 유일한 차이점은 사용 된 패키지의 명명 규칙입니다. 우리의 주요 응용 프로그램은 표준 com.company.application 이름을 따르지 않으며 여러 패키지 이름이 포함되어 있습니다. 내 응용 프로그램은 com.company.application 규칙을 사용합니다. 당신이 당신의 프로그램이 필요로하는 모든 라이브러리를 포함하도록 클래스 경로를 설정해야 자바 프로그램을 실행할 때

건배,

Andez

+1

건배,

Andez. – Thilo

답변

0

Jon을 도우려는 건데.

클래스 패스 문제라고 생각하여 여기에 게시물을 단순화하려고했습니다. 당신이 나에게 약간의 incling과 뭔가를 사무실의 누군가가 매니 페스트에 대해 말하면서 jar 파일 내용을 살펴 보았습니다.

우리의 응용 프로그램은 타사의 가져온 클래스 파일을 포함하는 많은 타사 jar 및 많은 패키지로 구성됩니다.

jar의 META-INF 폴더를 발견하고 INDEX.LIST 및 MANIFEST.MF가 발견되었습니다. 다른 깨끗한 프로젝트에는 MANIFEST.MF 파일 만있었습니다. 우리 응용 프로그램 jar 파일에서 INDEX.LIST를 삭제하고 모든 것이 효과가있었습니다. 하지만 매번 컴파일하여 INDEX.LIST를 생성했습니다. 나는 ANT 사이트를 살펴 봤지만 이것이 왜 생성되는지는 알 수 없었다.

소스 코드를 다시 살펴본 결과 프로젝트에 META-INF 패키지가있었습니다. 그것이 어디서 왔는지 또는 누가 거기에 놓았는지에 대해서는 너무도 확신하지 못합니다. 그러나 나는 그것을 지웠고 모든 것이 잠시 후에 효과가있는 것으로 보인다. JRE6/lib 디렉토리/내선으로 일을 복사하지 마십시오

+0

jar.index = $ {jnlp.enabled}를 project.properties의 jar.index = false로 변경하거나 도구> 옵션> Java> 개미> 등록 정보에서 전역으로 변경하십시오. – jla

2

이는 클래스 경로에 문제가있을 수 있습니다. 기본적으로 jre-wide 라이브러리를로드합니다.이 때문에 % JAVA_HOME %/lib 또는 % JAVA_HOME %/lib/ext에 jar 파일을 저장하면됩니다 (하지만이 jar 파일은 실행하지 않은 코드에서 사용할 수 있습니다. 의도).

당신이

자바 foo.bar.Baz의 -classpath 예를 들어, 명령 줄에서 -classpath 인수를 제공하고 있는지 확인;. ./ lib 디렉토리/JIDE-oss.jar

+0

s/may/is/:-) SO 님, 안녕하세요. –

+0

그래서 같은 : C :. \ WINDOWS \ SYSTEM32 \ java.exe를 -jar "MyAppJarFile.jar"-classpath; ./ lib 디렉토리/My3rdPartyLib.jar 내가 참조하고 각 jar 파일을 지정해야합니까? 또는 * 와일드 카드를 제공 할 수 있습니까? 나는 이것을 시도했지만 코드의 같은 줄에 같은 예외를 던진 것으로 보인다. http://download-llnw.oracle.com/javase/1.4.2/docs/tooldocs/windows/classpath.html – Andez

+0

Jar 파일에서 재생했습니다. WinRAR을 사용하여 열었습니다. netbeans 내 응용 프로그램을 컴파일 할 때 META - INF 폴더 아래에 INDEX.LIST 파일을 만들었습니다. 나는이 파일을 지우고 모든 것이 좋습니다. 내 다른 응용 프로그램 에서이 빌드되지 않은 것으로 나타났습니다 그리고 난 왜 확실하지? 어떤 아이디어? 건배 Andez – Andez

관련 문제