我尝试从 Windows 注册表读取值。当我在 Intellij Idea 中运行此代码时,它运行良好。
public static String getInstallLocationValue() {
String value = WinRegistry.getString(
WinRegistry.HKEY_LOCAL_MACHINE,
"SOFTWARE\\" + ApplicationConstants.APP_NAME + "\\",
"InstallLocation");
System.out.println("Windows Distribution = " + value);
return value;
}
但是当我从 jar 文件运行它时它崩溃了:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/deploy/util/WinRegistry at com.doos.utils.RegistryManager.getInstallLocationValue(RegistryManager.java:10) at com.doos.core.Main.main(Main.java:51)
Caused by: java.lang.ClassNotFoundException: com.sun.deploy.util.WinRegistry
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
您有什么想法,如何解决这个问题吗?
我没有使用 WinRegistry 解决问题,而是使用 JNA 中的 Advapi32Util 类。图书馆。
我是一名优秀的程序员,十分优秀!