Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用windows在jar库上使用System.loadLibrary_Java_Eclipse_Maven_Jar - Fatal编程技术网

Java 使用windows在jar库上使用System.loadLibrary

Java 使用windows在jar库上使用System.loadLibrary,java,eclipse,maven,jar,Java,Eclipse,Maven,Jar,我正在使用Windows 10操作系统,并尝试运行JPBC(基于对的加密),如下所述:。安装对库很有效,现在我在本地maven repo.m2\repository\it\unisa\dia\gas中有一堆文件夹,包括.jar和.java文件。例如,其中一个文件是jpbc pbc,但还有更多 现在我从gradle导入了一个需要这些文件的项目。该项目包括生产线 System.loadLibrary("jpbc-pbc"); 现在,这会抛出一个错误: Could not load library

我正在使用Windows 10操作系统,并尝试运行JPBC(基于对的加密),如下所述:。安装对库很有效,现在我在本地maven repo.m2\repository\it\unisa\dia\gas中有一堆文件夹,包括.jar和.java文件。例如,其中一个文件是jpbc pbc,但还有更多

现在我从gradle导入了一个需要这些文件的项目。该项目包括生产线

System.loadLibrary("jpbc-pbc");
现在,这会抛出一个错误:

Could not load library jpbc-pbc. JCPABE will be extremely slow.
java.lang.UnsatisfiedLinkError: no jpbc-pbc in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at cpabe.Cpabe.<clinit>(Cpabe.java:24)
at cpabe.demo.DemoForCpabe.main(DemoForCpabe.java:63)

jpbc pbc库不在java.library.path中。 尝试使用以下方法添加它:

1。命令行

java -Djava.library.path=<path_to_dll> <main_class>
System.setProperty(“java.library.path”, “/path/to/library”);
3。IDE

取决于您使用的IDE,例如在Eclipse中,您可以:

  • 在包资源管理器中右键单击项目
  • 选择生成路径->配置生成路径
  • 在“库”选项卡中添加库

您的java.library.path中没有jpbc pbc库。 尝试使用以下方法添加它:

1。命令行

java -Djava.library.path=<path_to_dll> <main_class>
System.setProperty(“java.library.path”, “/path/to/library”);
3。IDE

取决于您使用的IDE,例如在Eclipse中,您可以:

  • 在包资源管理器中右键单击项目
  • 选择生成路径->配置生成路径
  • 在“库”选项卡中添加库

loadLibrary()
用于加载
.dll
文件,而不是
.jar
文件。为什么他们在代码中使用它并将其与.jar文件链接?有没有其他选择?因为Java代码需要DLL文件中本机编译的代码来执行高性能加密逻辑。这就是警告“JCPABE将极其缓慢”的内容。如果没有快速的本机代码,加密将使用Java代码完成,而这对于类似的东西来说要慢得多。
loadLibrary()
用于加载
.dll
文件,而不是
.jar
文件。为什么他们在代码中使用它并将其与.jar文件链接?有没有其他选择?因为Java代码需要DLL文件中本机编译的代码来执行高性能加密逻辑。这就是警告“JCPABE将极其缓慢”的内容。如果没有快速的本机代码,加密将使用Java代码完成,这对于类似那样的东西来说要慢得多。Java-Djava.library.path=,但我只有一个.jar。我现在尝试了java-Djava.library.path=Desktop/jpbc-pbc/2.0.0 jpbc-pbc-2.0.0.jar,但它说无论我在哪里都拒绝访问it@MarcBurian如果您只有一个
.jar
文件,而没有
.dll
文件,那么就不用担心库路径。库路径的用途是指定存放
.dll
文件的一个或多个位置。但是,您应该重新检查
.jar
文件的位置,因为
.dll
文件很可能也在那里。如果您有一个.jar文件,您不需要将其添加到类路径而不是库路径。方法2不起作用。在运行时,
java.library.path
属性为“只读”(某种程度上)。虽然确实可以“设置”属性并从中“获取”设置的值,但这样做实际上不会更改JVM中的
java.library.path
。JVM在初始化期间的某个时候,在程序执行之前,对java.library.path进行计算。因此,除非您使用强制JVM重新加载
java.library.path
,否则在运行时更改它不会起任何作用。java-Djava.library.path=,但我只有一个.jar。我现在尝试了java-Djava.library.path=Desktop/jpbc-pbc/2.0.0 jpbc-pbc-2.0.0.jar,但它说无论我在哪里都拒绝访问it@MarcBurian如果您只有一个
.jar
文件,而没有
.dll
文件,那么就不用担心库路径。库路径的用途是指定存放
.dll
文件的一个或多个位置。但是,您应该重新检查
.jar
文件的位置,因为
.dll
文件很可能也在那里。如果您有一个.jar文件,您不需要将其添加到类路径而不是库路径。方法2不起作用。在运行时,
java.library.path
属性为“只读”(某种程度上)。虽然确实可以“设置”属性并从中“获取”设置的值,但这样做实际上不会更改JVM中的
java.library.path
。JVM在初始化期间的某个时候,在程序执行之前,对java.library.path进行计算。因此,除非您使用强制JVM重新加载
java.library.path
,否则在运行时更改它不会起任何作用。