0

在 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);


}

任何人都可以帮我解决这个例外吗?

4

2 回答 2

1

该错误是java.lang.ClassNotFoundException在查找类时引起的com.sun.servicetag.UnauthorizedAccessExceptiondb/lib/register.jar我可以在官方 Oracle JDK的文件中找到这个类。这使我得出以下可能的结论:

  • 您在 Windows 下使用 Oracle JVM 运行
  • 您没有在 Linux 下运行 Oracle JVM(可能是 OpenJDK)。

根据 mvnrepository,您可以在sysnet-registration.jar存档中找到缺失的类。我使用 jar-download.com 从类名回溯到包含它的 jar(未链接,因为上一个链接最终出现在垃圾邮件场)

您可以尝试将该 jar 添加到您的运行时类路径中,看看它是否能解决问题。

于 2013-10-10T15:45:27.850 回答
0

检查您是否有适当的访问权限来运行 java 之类的应用程序。尝试 sudo ... 默认情况下,root 具有这些访问权限。

你需要对文件有执行权限,你可以试试。 chmod +x 文件名

于 2013-10-10T13:43:33.620 回答