2011-12-10 7 views
0

Java 기술을 사용하여 Windows 플랫폼에서 MAPSERVER (버전 6.0.1)를 사용하여 동적 웹 응용 프로그램을 코딩하고 실행했습니다. 자, 우분투 11.10에 배포 할 필요가 있습니다. 우리는 Apache Tomcat 6.0, Mapserver 6.0.1, Apache 2.0 및 FWTools-2.0.1을 설치했습니다 (이 패키지에는 mapserver에 필요한 모든 도구가 포함되어 있으므로 잘못이 아니기 때문에 다른 도구를 설치할 생각이 없습니다) . 우리는 Apache Tomcat의 Webapps 폴더에 war 파일을 배포했다. 나는 mapscript API와 관련된 코드를 가지고 있지 않은 인덱스 페이지를 얻었다. 위의 오류가 표시 된 브라우저 페이지를 새로 고침 동안UnsatisfiedLinkError 및 NoClassDefFoundError : Ubuntu에서 Java Mapscript 실행 11.10

java.lang.UnsatisfiedLinkError: no mapscript in java.library.path 
java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) 
java.lang.Runtime.loadLibrary0(Runtime.java:840) 
java.lang.System.loadLibrary(System.java:1047) 
edu.umn.gis.mapscript.mapscriptJNI.<clinit>(mapscriptJNI.java:23) 
edu.umn.gis.mapscript.mapObj.<init>(mapObj.java:283) 

다시 우리는 다음과 같은 오류를 얻고있다 mapscript와 다른 서블릿을 ... 가져 오는 동안, 나는이 변화를 가지고,

java.lang.NoClassDefFoundError: Could not initialize class  
edu.umn.gis.mapscript.mapscriptJNI 
edu.umn.gis.mapscript.mapObj.<init>(mapObj.java:283) 

내가 검색 위의 문제에 대해 그물에. 그러나 마침내 비어 있습니다. 위의 문제에 대한 아이디어를 제공해주십시오.

답변

0

나는 다음 두 항목을 확인합니다 :

  1. 톰캣에 mapscript.jar 파일이 적어도 당신의 웹 애플리케이션의 클래스 패스? (NoClassDefFoundError는 큰 실마리입니다.)
  2. libmapscript.so은 LD_LIBRARY_PATH 또는 -Djava.library.path에 있습니까?

섹션 (리눅스) 실행하고있는 Java Mapscript 근처,이 post에 모습을 가지고 시도 (UnsatisfiedLinkError를 공유 객체 이후 찾을 수 없습니다).

희망 하시겠습니까?

+0

예. 심지어 두 번째 파일도 만들었지 만 문제는 mapserver 설치시와 root (/ of 우분투)에서 libmapscript.so라는 파일을 찾지 못했습니다. 브라우저를 새로 고치면서 UnsatisfiedLinkError가 사라지고 onCloseDefFoundError가 발생합니다. – Vish

+0

리눅스 서버의 컴파일 단계에서'libmapscript.so'가 생성되어 있어야합니다. 'configure' 옵션을 게시 할 수 있습니까? (c.f. http://trac.osgeo.org/mapserver/wiki/JavaMapscriptUsing#againstFwtools) – buruzaemon

+0

나는 게시물에 따라 링크를 공유 한 모든 게시물을 수행했습니다. 우리가 한 일은 인터페이스를 만들고 테스트하는 것입니다. 그게 필요한가? – Vish

2

내가 UnsatisfiedLinkError를 얻는 이유를 설명하지는 않지만 대신 페이지를 다시로드 할 때 NoClassDefFoundError가 표시되는 이유를 설명합니다.

NoClassDefFoundError 메시지가 Could not initialize class ... 인 경우 이미 초기화하려고 시도한 클래스를 초기화하려고 시도 할 때 JVM에 의해 throw됩니다.

당신이 스택 추적의 첫 번째

는 메소드 이름 <clinit> 클래스 mapscriptJNI의 정적 초기화를 표시 줄

 
edu.umn.gis.mapscript.mapscriptJNI.<clinit>(mapscriptJNI.java:23) 

가 포함되어 있습니다. 따라서 UnsatisfiedLinkError가 발생하는 시점에서 JVM이이 클래스를 초기화하려고했습니다. 오류 메시지를 보면이 정적 초기화 프로그램이 원시 코드 라이브러리 mapscript을로드하려고 시도했지만 실패한 것으로 보입니다.

이 UnsatisfiedLinkError는 mapscriptJNI 클래스가 성공적으로 초기화되지 못하게합니다. JVM은 초기화에 실패한 모든 클래스에 대한 기록을 유지하며 해당 클래스 중 하나를 다시 초기화하려고하면 해당 클래스를 초기화 할 수 없다는 메시지와 함께 NoClassDefFoundError를 얻습니다.

페이지를 새로 고치면 JVM이 두 번째로 클래스 mapscriptJNI을 초기화하려고합니다. 물론이 클래스는 이전 시간을 초기화하지 못했습니다. 두 번째 스택 추적에는 내가 설명한 오류가 있습니다.

요약하면 UnsatisfiedLinkError가 실제 오류입니다. 그것을 고치고 다른 하나는 사라질 것입니다.

+0

지도 서버의 구성과 'libmapscript.so'에 대한 제안은 @ 루크? – Vish

+0

@Vish : 부르자에 몬이 말하는 것 외에는 없습니다. –