com/sun/deploy/util/WinRegistry 抛出 ClassNotFoundException Intellij Idea
com/sun/deploy/util/WinRegistry throws ClassNotFoundException Intellij Idea
我尝试从 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 解决问题,而是使用 Advapi32Util class 来自 JNA图书馆。
我尝试从 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 解决问题,而是使用 Advapi32Util class 来自 JNA图书馆。