在linux机器上运行jar时发生UnauthorizedAccessException

时间:2013-10-10 13:36:07

标签: java linux

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


}

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

2 个答案:

答案 0 :(得分:1)

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

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

根据mavenhub的说法,您可以在sysnet-registration.jar存档中找到丢失的课程。

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

答案 1 :(得分:0)

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

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