我在linux机器上运行jar文件时得到以下堆栈跟踪。然而,它在Windows机器上完美运行
Exception in thread "Thread-0" java.lang.NoClassDefFoundError: com/sun/servicetag/UnauthorizedAccessException
at com.montior.activemq.util.MQProperty.loadProperties(MQProperty.java:31)
at com.montior.activemq.util.MonitorThread.loadProperties(MonitorThread.java:82)
at com.montior.activemq.util.MonitorThread.run(MonitorThread.java:39)
at java.lang.Thread.run(Thread.java:679)
Caused by:java.lang.ClassNotFoundException:com.sun.servicetag.UnauthorizedAccessException
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 4 more
这是我的loadProperies()方法
public static void loadProperties() throws FileNotFoundException,IOException,ArgumentMissingException {
props=new Properties();
// load a properties file
String path = "./util.properties";
props.load(new FileInputStream(new File(path)));
ActiveMqClient.readProperties(props);
}
任何人都可以帮我解决这个例外吗?
答案 0 :(得分:1)
查找课程java.lang.ClassNotFoundException
时导致错误com.sun.servicetag.UnauthorizedAccessException
。我可以在官方Oracle JDK中的文件db/lib/register.jar
中找到此类。这使我得出以下可能的结论:
根据mavenhub的说法,您可以在sysnet-registration.jar
存档中找到丢失的课程。
您可以尝试将该jar添加到运行时类路径中,看看它是否解决了这个问题。
答案 1 :(得分:0)
检查您是否具有运行java等应用程序的适当权限。尝试sudo ...默认情况下root具有这些访问权限。
您需要拥有文件的执行权限,您可以尝试。 chmod + x filename