2015-05-10 121 views
1

With maven我正在构建一个必须动态加载驱动程序的应用程序。使用以下代码只有在driver.so位于里面由此产生JAR文件时才起作用。我能做些什么该文件可以找到外部JAR内的路径./natives/driver.so。当驱动器被定位内部JAR从JAR文件外部加载资源文件

package com.myproject; 

public class Starter { 
    public static void main(String[] args) { 
     File classpathRoot = new File(Starter.class.getClassLoader().getResource("driver.so").getPath()); 
     System.out.println(classpathRoot); 
    } 
} 

输出为:(在target/natives目录中target以及)以外JAR定位

jar:file:/home/ted/java/myproject/target/myproject-0.1-SNAPSHOT.jar!/libgdx64.so 

输出是:

null 

我开始通过应用程序:

cd /home/ted/java/myproject/target/ 
java -Djava.library.path=./natives -cp myproject-0.1-SNAPSHOT.jar com.myproject.Starter 

我能做些什么?

回答

0

试试这个:

package com.myproject; 

public class Starter { 
    public static void main(String[] args) { 
     File file = new File("natives/driver.so"); 
     System.out.println(file); 
    } 
} 

或本:

package com.myproject; 

public class Starter { 
    public static void main(String[] args) { 
     File file = new File(System.getProperty("java.library.path"), "driver.so"); 
     System.out.println(file); 
    } 
}