2014-10-18 22 views
0

我有一個Java庫的問題。我使用的是javax.mail和mysql-connector。 在編寫我沒有任何問題,但如果我嘗試使用sudo執行程序:MySQL和郵件Java庫之間的衝突

$sudo java Server -jar mysql-connector-java-5.1.28.jar 

它給我這個錯誤:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:259) 
    at dbConnect.dbQuery(dbConnect.java:192) 
    at Server.main(Server.java:39) 

而如果我嘗試沒有執行它須藤:

$java Server -jar mysql-connector-java-5.1.28.jar 

它給我這個錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/internet/AddressException 
    at dbConnect.registration(dbConnect.java:161) 
    at dbConnect.splitUsrPass(dbConnect.java:87) 
    at dbConnect.dbQuery(dbConnect.java:196) 
    at Server.main(Server.java:39) 
Caused by: java.lang.ClassNotFoundException: javax.mail.internet.AddressException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 4 more 

我可以理解,爲什麼它沒有管理員權限無法正常工作(我猜郵件庫需要它們),但對我來說,如果我給它以管理員權限,它不會找到MySQL庫。

有誰知道這是不是一個已知的問題?

回答

0

當你想在命令行上運行的Java的東西,你有兩個選擇:

運行的類:java MyClass 運行一個jar:java -jar MyJar.jar

你所試圖做的是兩個,這將導致-jar-部分將被忽略。

我猜你想要做的是運行類ServerMySQL -jar在類路徑上。那麼正確的命令是:

java Server -cp mysql-connector-java-5.1.28.jar 

你也可以添加包含MySQL -jar到CLASSPATH環境變量的目錄。您使用sudo而不是當得到不同的錯誤信息的原因可能是因爲root用戶有不同的CLASSPATH比你的用戶(用戶沒有在類路徑中javax.mail的罐子,而root有它。)