- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用嵌入式 firebird 导出我的 java 项目时,我在控制台中收到以下消息: “在 java.library.path 中没有 jaybird[22[任何版本,我猜]]”。
但它实际上是在我的项目的库路径上 self 引用到我的工作区。我已经尝试了很多解决方法,比如
System.LoadFile("jaybird22.dll") //full uri, just the name of the dll, nada
System.Load("jaybird22.dll") //full uri, just the name of the dll, nada
或者在用户库中插入dll或者将 dll 作为引用库放在另一个文件夹中。
这真的让我很紧张。如何解决此错误? JNI?
最佳答案
解决方案
好的,这是解决这个问题的方法。问题是在 jar 中没有 dll,也没有任何包含文件的文件夹被打包到 jar 中。所以几乎每个 dll、带有图像的文件夹或任何必须在可运行 jar 所在文件夹旁边的文件夹中。唯一打包在 jar 中的是外部 jar 和用于运行软件的 .java 文件。
无论如何,对于 Firebird 嵌入式模式来说,这非常棘手。由于 jaybird(SOME_VERSION).dll 必须放在所有 .dll、.msg 文件旁边。但是 JVM 会要求 jaybird dll 在 java.library.path 中,当然它只是 system32 和一些与程序无关的 java 文件夹。
因此,为了让您的程序将可运行的 jar 文件夹检测为 java.library.path(实际上应该称为路径),其中 jaybird dll 文件和其他 firebird 文件和文件夹是您将这些 LOC 放在 main 方法中:
String decodedPath =URLDecoder.decode(ClassLoader.getSystemClassLoader().getResource(".").getPath(), "UTF-8");
decodedPath=decodedPath.substring(1, decodedPath.length()-1).replaceAll("/", "\\\\");
System.setProperty("java.library.path",decodedPath+";"+System.getProperty("java.library.path")));
我为库路径连接了以前的目录,因为我只是将它添加到列表中。
请注意,这些 LOC 必须在 ANY CODE 之前,这也包括调用构造函数。如果您使用的是全局静态模块或 JNI 调用,请当心。
我希望这可以节省一些人的时间,我已经浪费了 12 个小时的时间来试图正确地解决这个问题。
如果管理员不删除我的编辑或这个问题的 self 回答,我将不胜感激。
快乐编码=D
关于java - java.library.path 中没有 jaybird [dll],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11905362/
我看过有关 CocoaPods 的指南,建议像这样导入所需的 pod 的库 header : #import 在哪里Library是库的名称(例如 #import )。 我还看到指南建议像这样导入
我正在尝试创建一个包含其他库的 PHP 库,我敢打赌我遗漏了一些基本的东西。 使用 AWS PHP SDK作为指南,我想创建一个库,在使用 Composer 安装后,它需要其他库,但是类的整个范围(包
我正在为 Android 产品开发我的 gradle 版本,以使产品风格正常工作。 我有以下项目结构: at.mkw.inlocs.android - Library Project at.mkw.i
使用@testing-library/react-hooks 我过去常常通过initialProps 传递模拟存储,正如Advanced Hooks 中提到的那样文档。假设我有一个代码: import
我试图获得一个静态链接到我的程序的音频库。我用 this灵活的包。为了让它运行,我必须按照描述构建 soloud 库 here .下载后不久,我在“build”文件夹中运行了“genie --with
我刚刚安装了 zkcm library在我的 kubuntu 机器上,我在编译 C++ 代码时遇到了问题。 我已经安装了 gmp 和 mpfr 库并检查它们是否工作;代码 mpfr_t m1, m2,
我正在尝试编译我的 native 代码。这是我的 android.mk 文件 //part1-static lib LOCAL_PATH := $(call my-dir) include $(CLE
我正在开发一个带有沙丘的大型图书馆。让我们调用这个库L . 为了避免造成大困惑,沙丘项目有许多较小的库:A , B , C , ... 这些库相互依赖。 我希望用户能够 opam install L
在 unix 之上使用 C 语言工作,我正在加载和使用共享库,如下所示: ... handle = dlopen("nameOfLib"); ... libInit(); ... libGoToSta
我试图找出一种更简单的方法来为XCode中的链接器构建阶段复制/同步框架列表。我知道我可以在Xcode中复制目标,但这是用于创建新的Cocoa Touch Unit Testing Bundle目标。
例如/lib/的描述是它包含系统的共享库文件。 图书馆到底是什么?我们谈论的库文件是否类似于在 C 中导入库?库文件中包含什么以及它们的用途是什么? 它与.dll 有什么关系 最佳答案 库只是一个代码
我有这样的目录结构 . --compile_c.sh --compile_java.sh --config.sh --execute_java.sh --run.sh --src --ccode
我正在更新一些 Makefile 以从 Make 3.81 移动到 3.82。在多个地方,原作者使用了类似这样的东西来构建静态库: all: lib$(library).a($objects) 这似乎
我是 Rust 的新手,正在尝试了解 Cargo 的东西。我在他们的常见问题解答中读到关于 "why do binaries have Cargo.lock in version control, b
我正在尝试使用 Microsoft Enterprise Library 中的 DatabaseFactory 方法。 using Microsoft.Practices.EnterpriseLibr
我刚刚升级到Xcode 5.1,突然出现一个新警告: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctool
然后新的Enterprise Library 6出来了,可以是downloaded here .我已将 EnterpriseLibrary6-binaries.exe 下载并解压缩到我的 C: 驱动器
我正在尝试将 native 库与我的 Eclipse 插件捆绑在一起。当我提供库的路径时 -Djava.library.path ,它完美无缺。 但是,当我将它添加到 MANIFEST.MF 中时文件
在我的 Android Studio 项目中,我有两个子项目/模块:一个 Android 应用程序(App1)和一个 Android 库项目(LibraryProject1)。 App1取决于 Lib
我最近使用 Google 的 Closure 编译器创建了一个 JavaScript 库:https://github.com/bvaughn/task-runner 我打算让这个库供那些也需要完整闭
我是一名优秀的程序员,十分优秀!