我的Java应用程序使用DLL库。我如何从JAR文件中使用它?
DLL位于项目的源文件夹中。我必须将其包含在我的JAR中,在运行时将其提取(在jar的同一目录中)并加载它。
尝试加载dll之前,需要将dll放入库路径(推荐)。因此你将不得不从jar中提取它并将其复制到lib path中。
private void loadLib(String path, String name) {
name = System.mapLibraryName(name); // extends name with .dll, .so or .dylib
InputStream inputStream = null;
OutputStream outputStream = null;
try {
inputStream = getClass().getResourceAsStream("/" + path + name);
File fileOut = new File("your lib path");
outputStream = new FileOutputStream(fileOut);
IOUtils.copy(inputStream, outputStream);
System.load(fileOut.toString());//loading goes here
} catch (Exception e) {
//handle
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
//log
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
//log
}
}
}
}
注意: ACWrapper是持有静态方法的类
问题内容: 我可以使用ClassLoader实现从InputStream加载类吗? 我正在尝试将具有InputStream的JAR加载到新的ClassLoader中。 问题答案: 这不太可能,因为您会发现自己尝试这样做。您将无法根据需要随机访问和查找类,因此您必须将内容缓存在内存或文件系统中。 如果您在磁盘上缓存,则只需使用URLClassLoader即可。 如果缓存在内存中,则需要使用JarIn
在使用Maven捆绑JAR文件中的资源时,我有一种感觉,我错过了一些关键的东西。我的目录结构是标准的Maven结构(即\src\main\java,\src\main\Resources)。 使用IDE时,我将资源文件引用为\main\resources\images\blah。。。它工作得很好,但当Maven捆绑JAR文件时,它会将路径放在相对于根的位置(“\ images\blah”),因此没
我正在使用Scene Builder2.0和eclipse Luna。在fxml文件中,我有我的场景的代码和图像。如果我在eclipse上测试这一点,一切都是正常的,但是如果我将它导出到可运行的jar中,然后运行它,我就会得到没有图像的窗口...以下是部分代码: 文件结构: 我觉得问题出在路径上,但我不知道这条路是怎么走的。加载程序代码: 初始化函数:
我在我的项目中使用了几个不同的模式。它们每个都被编译到一个单独的jar中,每个都使用一个单独的包,使用xmlbean ant任务。我似乎只能成功地解析类路径中第一个模式jar的xml(使用.方法),否则我会得到一个,如此错误中所述。如果我更改jar顺序,不同的模式将能够成功解析,并且将被抛出用于不同的类。 我已经做了一些调试,我得出的结论是包的结构可能是负责任的。由于我的架构没有命名空间,因此我构
问题内容: 一些用户抱怨小程序不再起作用,当他们查看Java控制台时,遇到一个java.lang.noClassDefFoundError并检查我的访问日志,我发现他们已经下载了包含该类的jar文件,然后发出get命令。要求特定的班级。 不同的用户中断不同的类。 一些用户很好。 任何想法可能导致此问题/解决此问题。 我已经检查以确保该文件位于其Java缓存中,清除了缓存等。似乎没有任何修复方法。
我的应用程序的JAR中的目录中有一个TTF字体。 我这样创建我的FOP: 如何在我正在渲染的 PDF 文件中将 配置为嵌入?