Java 在linux计算机上运行jar时发生UnauthorizedAccessException

Java 在linux计算机上运行jar时发生UnauthorizedAccessException,java,linux,Java,Linux,在linux机器上运行jar文件时,我得到以下stacktrace。然而,它在windows机器上工作得非常好 Exception in thread "Thread-0" java.lang.NoClassDefFoundError: com/sun/servicetag/UnauthorizedAccessException at com.montior.activemq.util.MQProperty.loadProperties(MQProperty.java:31)

在linux机器上运行jar文件时,我得到以下stacktrace。然而,它在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
这是我的loadProperties()方法


有谁能帮我解决这个问题吗

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

您需要对文件具有执行权限,可以尝试。
chmod+x filename

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

  • 您正在Windows下运行Oracle JVM
  • 您没有在Linux下运行Oracle JVM(可能是OpenJDK)
根据mvnrepository,您可以在存档中找到丢失的类。我使用jar-download.com将类名回溯到一个包含它的jar(没有链接,因为前面的链接最终在一个垃圾场)


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

抱歉!!不允许在生产服务器上使用sudo请求管理员提供访问权限链接已断开更新链接以使用mvnrepository.com。这是一种非常特殊的情况,该类存在于oracle VM中,但不存在于OpenJDK中。
    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);


}