我得到這個非常奇怪的錯誤與Sun Java和Ubuntu的。Sun Java not loading UnixPrincipal(Ubuntu 12)
"java.lang.ClassNotFoundException: com.sun.security.auth.UnixPrincipal"
該類似乎是一個陽光特定的類,而我也的Sun Java 1.6的新鮮,工作版本在Ubuntu 12.04。我已經證實我的Java版本是正確的,它正在被類運行,事實上,其他版本(如openjdk)不會干擾。
這裏是我的規格:
$ java -version java version "1.6.0_33" Java(TM) SE Runtime Environment (build 1.6.0_33-b03) Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)
$ lsb_release -a No LSB modules are available. Distributor ID:
Ubuntu Description: Ubuntu 12.04 LTS Release: 12.04 Codename:
precise
錯誤:
home/vagrant/Development/workspace/xxxxx/build.xml:222: java.lang.NoClassDefFoundError: com/sun/security/auth/UnixPrincipal at org.apache.hadoop.security.UserGroupInformation.(UserGroupInformation.java:246) at org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:1436) at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1337) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:244) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:122) ... Caused by: java.lang.ClassNotFoundException: com.sun.security.auth.UnixPrincipal at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1361) at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1311) at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1070) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 38 more
'首先,我認爲這只是意味着,在我的太陽安裝類wasnt'
但以下:
unzip -l /usr/lib/jvm/java-6-sun/jre/lib/rt.jar | grep UnixPrincipal
透露:
1272 2012-05-09 10:19 com/sun/security/auth/UnixPrincipal.class
而且,通過檢查System.getProperties(),我發現:
java.ext.dirs=....usr/lib/jvm/java-6-sun-1.6.0.33/jre/lib/rt.jar.....
從而表明這個類是在一個罐子裏這肯定是我的Java的運行時版本!
因此,不知何故,Java運行時不能加載這個類。我想知道爲什麼 ?
一個小問題:我通過ant 1.8運行它。不過,我不認爲這會影響任何事情,因爲我相信Ant類加載器相對穩定。
你已經安裝了其他JVM? –
我相信gcj可能在機器上,但顯然,所討論的運行時正在使用Sun JVM(如System.getProperties所示)。 – jayunit100