【问题标题】:Conflict between MySQL and mail Java librariesMySQL 和邮件 Java 库之间的冲突
【发布时间】:2014-12-13 19:52:45
【问题描述】:

我对 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 库。

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

【问题讨论】:

    标签: java mysql email classpath


    【解决方案1】:

    当您想在命令行上使用 Java 运行某些东西时,您有两个选择:

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

    您尝试做的是两者,这将导致-jar-part 将被忽略。

    我猜你想要运行类Server,在类路径上带有MySQL-jar。正确的命令将是:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多