MySQL和邮件Java库之间的冲突

时间:2014-10-18 09:50:57

标签: java mysql email classpath

我的Java库存在问题。我正在使用javax.mail和mysql-connector。 编译时我没有任何问题,但如果我尝试用sudo执行程序:

$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)

如果我尝试在没有sudo的情况下执行它:

$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库。

有人知道这是否是一个已知问题?

1 个答案:

答案 0 :(得分:0)

如果要在命令行上使用Java运行某些内容,则有两个选项:

运行课程:java MyClass 运行一个jar:java -jar MyJar.jar

你要做的是两个,这将导致-jar - 部分被忽略。

我猜你想要做的是运行类Server,并在类路径上使用MySQL - jar。然后正确的命令是:

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

您还可以将包含MySQL - jar的目录添加到CLASSPATH环境变量中。您在使用sudo时获得不同错误消息的原因可能是因为root用户与您的用户不同CLASSPATH(您的用户缺少javax.mail - jar on类路径,而root有它。)