【发布时间】:2015-12-07 23:57:19
【问题描述】:
我有严重的问题,我已经尝试了所有可能的想法,我也阅读了关于类似问题的 stackoverflow 上的答案,这对我没有用。
实际发生的是我在glassfish 3.1.2.2 上部署应用程序。我正在使用 2 个罐子:jna.jar 和 platform.jar(我尝试了不同的版本,最后我尝试的是:jna-3.3.0.jar 和 jna-3.0.0-platform.jar)我想要的是读取 Windows 注册表项。我还从 jna.jar 调用其他方法(有趣的是,我不必将 jna.jar 包含在我的“.ear”文件内的 lib 目录中,这表明 - 它必须已经存在于 glassfish 的某个地方。当我搜索它在 glassfish 目录上 - 我找不到它。)。无论如何 - 当我调用 jna.jar 的方法时 - 它工作得很好,当我调用 platform.jar 的方法时,首先我必须将该 platform.jar 部署在我的 .ear 文件的 lib 目录中,其次 - 它永远不会有效 - 因为我得到:...
java.lang.IllegalAccessError: 试图从类 com.sun.jna.platform.win32.WinReg$HKEY 访问方法 com.sun.jna.Pointer.(J)V
我已经尝试了我能想到的任何事情:重建我的工作区,重命名 jar,包括它们都在 .ear 文件的 lib 文件夹中,包括其中一个,根本不包括,包括 glassfish3\glassfish\domains\target\lib\ext 中的那些 jar,包括glassfish3\glassfish\domains\target\lib\ext 中的一个或另一个,尝试这两个罐子的不同版本,没有任何效果。我尝试使用 jni4j.jar 代替 jna.jar 和 platform.jar,仍然没有帮助。
这是实际代码,使用 jna.jar 和 platform.jar:
if (Advapi32Util.registryKeyExists(WinReg.HKEY_LOCAL_MACHINE, "SOFTWARE\\CitySyncSafety")) {
path = Advapi32Util.registryGetStringValue(WinReg.HKEY_LOCAL_MACHINE, "SOFTWARE\\CitySyncSafety", "Path") + File.separator + "DetectEngine";
logger.warning("POJO path is: " + path);
} else {
path = "";
logger.warning("Else POJO path is: " + path);
}
String libPath = System.getProperty("java.library.path");
if (path != null && !path.equalsIgnoreCase("") && !libPath.contains(path)) {
logger.warning("Library paths are: " + libPath);
System.setProperty("java.library.path", System.getProperty("java.library.path") + File.pathSeparator + path);
}
if (path != null) {
//System.loadLibrary(path + File.separator + "cutilityProj1.dll");
}
它导致了所说的非法访问异常。当我尝试将 jni4j.jar 与以下代码一起使用时,我没有得到任何异常,因为我什么都没有得到:
try {
Reg reg = new Reg("HKEY_LOCAL_MACHINE\\SOFTWARE");
Reg.Key cp = reg.get("HKEY_LOCAL_MACHINE\\SOFTWARE");
Reg.Key sound = cp.getChild("CitySyncSafety");
String p = sound.get("Path");
path = p + File.separator + "DetectEngine";;
} catch (IOException e) {
if (path == null) {
path = "";
}
}
它只是永远挂在第一行。请注意,我已确保确实存在适当的密钥和目录,因此我们可以排除此问题。我将感谢任何帮助,因为我已经在这个问题上花费了 2 天时间。
【问题讨论】:
标签: java jar glassfish dependencies jna