2011-08-01 4 views
1

scala로 프로그램을 컴파일하고 실행하는 pom.xml을 만들려고합니다. 이 프로젝트를 실행하려면 * .so 라이브러리 (예 : gluegen-rt.so)가 필요합니다. 파일은 여기에 있습니다 논문 :는/usr/lib 디렉토리/JNI/maven과 우분투가있는 scala 용 java.library.path를/usr/lib/jni에 추가하십시오.

난 내 프로그램을 실행할 때이 오류가 있습니다

Exception in thread "main" java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738) 
    at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
    at java.lang.System.loadLibrary(System.java:1028) 
    at com.jogamp.gluegen.runtime.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:102) 
    at com.jogamp.gluegen.runtime.NativeLibLoader.access$000(NativeLibLoader.java:51) 
    at com.jogamp.gluegen.runtime.NativeLibLoader$1.run(NativeLibLoader.java:70) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.jogamp.gluegen.runtime.NativeLibLoader.loadGlueGenRT(NativeLibLoader.java:68) 
    at com.jogamp.common.jvm.JVMUtil.<clinit>(JVMUtil.java:56) 
    at javax.media.nativewindow.NativeWindowFactory.<clinit>(NativeWindowFactory.java:102) 
    at javax.media.opengl.awt.GLCanvas.<clinit>(GLCanvas.java:82) 
    at org.jzy3d.chart.Chart.initializeCanvas(Chart.java:65) 
    at org.jzy3d.chart.Chart.<init>(Chart.java:56) 
    at org.jzy3d.chart.Chart.<init>(Chart.java:39) 
    at fr.iscpif.slocalfit.testGraphique$.main(testGraphique.scala:28) 
    at fr.iscpif.slocalfit.testGraphique.main(testGraphique.scala) 

그래서 내가 받는다는와 연결 라이브러리에 대한 몇 가지 연구를하기를, 내가이 명령을 찾을 수 pom.xml 파일에 라인 :

<systemProperties> 
<property> 
<name>java.library.path</name> 
<value>/usr/lib/jni/</value> 
</property> 
</systemProperties> 

하지만 난 내 pom.xml 파일에이 줄을 쓸 수있는 내가 원하는 때문에 받는다는 내가 실행 전에 자바 명령 행 이 줄을 추가, 을 모르는 엄마 내 프로그램의 클래스 ...

감사합니다, 도움을 감사에

내 pom.xml 파일은 그렇게 실제로 :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>fr.iscpif</groupId> 
    <packaging>bundle</packaging> 
    <artifactId>slocalfit</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-library</artifactId> 
      <version>${lib.org.scala-lang.scala.version}</version> 
      <!--<scope>provided</scope>--> 
     </dependency> 
     <dependency> 
      <groupId>javax.media.opengl</groupId> 
      <artifactId>jogl-core</artifactId> 
      <version>2.0-pre-20101001</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.media.opengl</groupId> 
      <artifactId>jogl-util</artifactId> 
      <version>2.0-pre-20101001</version> 
     </dependency> 
     <dependency> 

      <groupId>javax.media.nativewindow</groupId> 
      <artifactId>nativewindow-core</artifactId>  
      <version>2.0-pre-20101001</version> 
     </dependency> 

     <dependency> 
      <groupId>com.jogamp.gluegen</groupId> 
      <artifactId>gluegen-rt</artifactId>  
      <version>1.0-beta07</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-math</artifactId> 
      <version>3.0-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>ca.umontreal.iro</groupId> 
      <artifactId>ssj</artifactId> 
      <version>2.4</version> 
     </dependency> 
     <dependency> 
      <groupId>gov.lbl.acs.colt</groupId> 
      <artifactId>colt</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>jfree</groupId> 
      <artifactId>jfreechart</artifactId> 
      <version>1.0.13</version> 
     </dependency> 
     <dependency> 
      <groupId>jfree</groupId> 
      <artifactId>jcommon</artifactId> 
      <version>1.0.15</version> 
     </dependency> 
     <dependency> 
      <groupId>org.openmole.tools</groupId> 
      <artifactId>mgo</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>org.openmole</groupId> 
      <artifactId>au.com.bytecode.opencsv</artifactId> 
      <version>2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org</groupId> 
      <artifactId>jzy3d</artifactId> 
      <version>0.9</version> 
     </dependency> 
    </dependencies> 

    <properties> 
     <lib.org.scala-lang.scala.version>2.9.0-1</lib.org.scala-lang.scala.version> 
     <maven.scala.version>${lib.org.scala-lang.scala.version}</maven.scala.version> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.scala-tools</groupId> 
       <artifactId>maven-scala-plugin</artifactId> 
       <executions> 
        <execution> 
         <configuration> 
         </configuration> 
         <id>scala-compile-first</id> 
         <phase>process-resources</phase> 
         <goals> 
          <goal>add-source</goal> 
          <goal>compile</goal> 
          <goal>testCompile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <!--<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <archive> 
         <manifest> 
          <mainClass>${run.mainclass}</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin>--> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <extensions>true</extensions> 
       <configuration> 
        <manifestLocation>target/META-INF</manifestLocation> 
        <finalName>${symbolic.name}_${project.version}</finalName> 
        <instructions> 
         <!--<Main-Class>fr.iscpif.TON.PACKAGE.TaClasse</Main-Class>--> 
         <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name> 
         <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> 
         <Import-Package>*;resolution:=optional</Import-Package> 
         <Export-Package>fr.iscpif.slocalfit.*,org.apache.commons.math.*,org.openmole.tools.mgo.*,umontreal.iro.lecuyer.*</Export-Package> 
         <Embed-Dependency>*;scope=!provided;inline=true;artifactId=!scala-library</Embed-Dependency> 
         <Embed-Transitive>true</Embed-Transitive> 
        </instructions> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <name>${project.artifactId} ${project.version}</name> 


    <repositories> 
     <repository> 
      <id>maven.iscpif.fr</id> 
      <name>ISCPIF repository</name> 
      <url>http://maven.iscpif.fr/public/</url> 
     </repository> 
     <repository> 
      <id>maven.iscpif.fr.snapshots</id> 
      <name>ISCPIF snapshots repository</name> 
      <url>http://maven.iscpif.fr/snapshots/</url> 
     </repository> 
     <repository> 
      <id>scala-tools.org</id> 
      <name>Scala repository</name> 
      <url>http://scala-tools.org/repo-releases/</url> 
     </repository> 
    </repositories> 

</project> 

답변

0

내가 받는다는하지만 많은 일한 적이있다 JNI.

사용중인 IDE에 네이티브 라이브러리 경로를 지정 했습니까? NetBeans 또는 Eclipse와 같은 IDE를 사용하는 경우 IDE에 .jar 파일을 추가 할 때 Java 네이티브 라이브러리 (특정 java .jar 라이브러리의 경우)가있는 위치 (.dll 또는 .so를 의미)를 지정해야합니다.

예 : Eclipse에서 : 프로젝트 -> 특성 -> Java 빌드 경로 -> 라이브러리 (탭 막대에서) -> 라이브러리를 클릭하고 펼치면 오른쪽에서 기본 라이브러리 위치를 찾을 수있다. .so 파일이있는 경로 만 지정하면됩니다. NetBeans에서 비슷한 절차를 수행해야합니다. Project Properties -> Libraries를 눌러야 만 그런 것들을 찾을 수있을 것 같습니다.

호프에 도움이 되었기를 바랍니다.