java - 无法从命令行使用 mysql 连接器运行类

标签 java mysql macos

我正在尝试运行使用 MySQL 连接器 mysql-connector-java-5.1.30-bin.jar 的已编译 java 类文件,但执行始终失败。在eclipse等IDE中运行时效果很好。

~/dropbox/workspace/mysqltut/src/zetcode/ 包含以下文件:

mysql-connector-java-5.1.30-bin.jar
Version.class
Version.java

在终端中导航到 ~/dropbox/workspace/mysqltut/src/zetcode/ 后,我不知道如何让它正常运行。

这是我的尝试及其结果。

尝试#1
java -cp/java -cp/mysql-connector-java-5.1.30-bin.jar 版本

Error: Could not find or load main class Version`

尝试#2
java -cp .:mysql-connector-java-5.1.30-bin.jar 版本

Exception in thread "main" java.lang.NoClassDefFoundError: Version (wrong name: zetcode/Version)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:

尝试#3
java -cp .;mysql-connector-java-5.1.30-bin.jar 版本

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
            (to execute a jar file)
where options include:
    -d32      use a 32-bit data model if available
    -d64      use a 64-bit data model if available
    -server   to select the "server" VM
                  The default VM is server,
                  because you are running on a server-class machine.


    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose:[class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -no-jre-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions with specified granularity
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions with specified granularity
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                  see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
                  show splash screen with specified image
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details.
-bash: mysql-connector-java-5.1.30-bin.jar: command not found

尝试#4
我将 mysql-connector-java-5.1.30-bin 从 zetcode 文件夹中移出,并将其放在 lib 文件夹中上一层。然后我重新导航,现在位于 ~/dropbox/workspace/mysqltut/src/ 并运行:
java -cp .:lib/mysql-connector-java-5.1.30-bin.jar zetcode/版本

May 02, 2014 10:54:31 PM zetcode.Version main
SEVERE: No suitable driver found for jdbc:mysql://localhost:3306/
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/
    at java.sql.DriverManager.getConnection(DriverManager.java:596)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at zetcode.Version.main(Version.java:24)

最佳答案

您需要将 jar 包含在类路径中。将类路径指向一个目录将使类加载器在该目录中查找类,但它不会看到这些 jar 并在其中查找。类路径中的每个元素都是一个根,类加载器将在该根下扫描类和资源。 JRE 类加载器不支持嵌套类路径根。

关于java - 无法从命令行使用 mysql 连接器运行类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23435408/

相关文章:

mysql - 如何格式化涉及除法的 MySQL 查询

r - 在 R 上运行 CellNet 时未加载 dyld

java - 我有一个在 "some"客户端计算机上有问题的第 3 方数字签名 Java 小程序,我知道如何验证版本但是。

java - 简单的错误检查用户输入

java - 循环中的 Runtime.getRuntime().exec()

php - 使用php将图片插入数据库

java - 从 .jar Java 中的当前目录搜索文件

php - id 在 where 子句中未定义索引

macos - 将 pkgbuild 安装在用户主目录中

xcode - xCode 6.4在El Capitan上崩溃