2012-07-02 29 views
1

我得到這個非常奇怪的錯誤與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類加載器相對穩定。

+0

你已經安裝了其他JVM? –

+0

我相信gcj可能​​在機器上,但顯然,所討論的運行時正在使用Sun JVM(如System.getProperties所示)。 – jayunit100

回答

1

你可能已經解決了這個現在,但這裏是我最近糾結着同樣的問題:

都是Sun的Java和GCJ安裝。交互式運行給了我Sun Java和​​類加載正確。非交互式運行(service myservice start)無法正確設置JAVA_HOME,系統將使用gcj代替,並且​​未能加載。在我的服務腳本中明確設置JAVA_HOME解決了問題。

0

我遇到了這個問題,試圖用ant來運行Solr。雖然我爲Oracle JDK8設置了JAVA_HOME,但我相信ant可能在我的Ubuntu 15.10計算機上找到了openjdk安裝。

的解決問題的方法是包括在<java>任務fork="true"選項:

<java fork="true" classname="com.mycompany.MyMainClassName"> 

通過包括fork="true"選項,它創造使用java命令,它正確地發現我的Oracle JDK第2個JVM。如果您不包含fork="true"選項,則用戶程序在ant正在使用的相同JVM內運行(可能不是您打算使用的JDK)。

僅供參考,完整的錯誤堆棧跟蹤是:

[java] java.lang.NoClassDefFoundError: com/sun/security/auth/UnixPrincipal 
    [java]  at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:195) 
    [java]  at org.apache.tools.ant.taskdefs.Java.run(Java.java:772) 
    [java]  at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:222) 
    [java]  at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:136) 
    [java]  at org.apache.tools.ant.taskdefs.Java.execute(Java.java:109) 
    [java]  at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) 
    [java]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [java]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    [java]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    [java]  at java.lang.reflect.Method.invoke(Method.java:497) 
    [java]  at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    [java]  at org.apache.tools.ant.Task.perform(Task.java:348) 
    [java]  at org.apache.tools.ant.Target.execute(Target.java:435) 
    [java]  at org.apache.tools.ant.Target.performTasks(Target.java:456) 
    [java]  at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405) 
    [java]  at org.apache.tools.ant.Project.executeTarget(Project.java:1376) 
    [java]  at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    [java]  at org.apache.tools.ant.Project.executeTargets(Project.java:1260) 
    [java]  at org.apache.tools.ant.Main.runBuild(Main.java:853) 
    [java]  at org.apache.tools.ant.Main.startAnt(Main.java:235) 
    [java]  at org.apache.tools.ant.launch.Launcher.run(Launcher.java:285) 
    [java]  at org.apache.tools.ant.launch.Launcher.main(Launcher.java:112) 
    [java] Caused by: java.lang.NoClassDefFoundError: com/sun/security/auth/UnixPrincipal 
    [java]  at org.apache.hadoop.security.UserGroupInformation.<clinit>(UserGroupInformation.java:336) 
    [java]  at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:1765) 
    [java]  at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:1758) 
    [java]  at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1626) 
    [java]  at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:254) 
    [java]  at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:123) 
    [java]  at com.touchcommerce.engagementloader.EngagementLoader.getFileSystem(EngagementLoader.java:342) 
    [java]  at com.touchcommerce.engagementloader.EngagementLoader.load(EngagementLoader.java:364) 
    [java]  at com.touchcommerce.engagementloader.EngagementLoader.main(EngagementLoader.java:454) 
    [java]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [java]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    [java]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    [java]  at java.lang.reflect.Method.invoke(Method.java:497) 
    [java]  at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:218) 
    [java]  at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:153) 
    [java]  ... 21 more 
    [java] Caused by: java.lang.ClassNotFoundException: com.sun.security.auth.UnixPrincipal 
    [java]  at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1388) 
    [java]  at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1337) 
    [java]  at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1095) 
    [java]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    [java]  ... 36 more 
    [java] Java Result: -1