java - 在命令行运行 java 程序,我做错了什么?

标签 java classpath

注意 我正在运行 Windows,路径看起来就像是 linus,因为我手动输入了它,这就是我对路径的看法。

我正在尝试运行我构建的 java 类来诊断我与数据库的连接,它引用了 oracle jdbc 适配器。

当我在没有类路径的情况下运行它时:

%> java DBDiagnostics <connectionString>

当它到达以下代码行时出现异常:

Class.forName("oracle.jdbc.pool.OracleDataSource").newInstance();

有以下异常(exception):

java.lang.ClassNotFoundException: oracle.jdbc.pool.OracleDataSource
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at DBDiagnostics.GetConnection(DBDiagnostics.java:43)
        at DBDiagnostics.runDiagnostic(DBDiagnostics.java:29)
        at DBDiagnostics.main(DBDiagnostics.java:18)
Creating connection.
java.sql.SQLException: No suitable driver found for lskd
        at java.sql.DriverManager.getConnection(DriverManager.java:602)
        at java.sql.DriverManager.getConnection(DriverManager.java:207)
        at DBDiagnostics.GetConnection(DBDiagnostics.java:55)
        at DBDiagnostics.runDiagnostic(DBDiagnostics.java:29)
        at DBDiagnostics.main(DBDiagnostics.java:18)
Veryfying connectivity to Database
Exception in thread "main" java.lang.NullPointerException
        at DBDiagnostics.verifyTable(DBDiagnostics.java:86)
        at DBDiagnostics.verifyTable(DBDiagnostics.java:76)
        at DBDiagnostics.verifyDatabseConnectivity(DBDiagnostics.java:68)
        at DBDiagnostics.runDiagnostic(DBDiagnostics.java:36)
        at DBDiagnostics.main(DBDiagnostics.java:18)

我假设这是因为我需要将它包含在类路径中。

所以,我尝试像这样将它添加到类路径中:

%> java -classpath .:ojdbc6.jar DBDiagnostics <connectionString>

VM 只是说找不到类:

Exception in thread "main" java.lang.NoClassDefFoundError: DBDiagnostics
Caused by: java.lang.ClassNotFoundException: DBDiagnostics
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: DBDiagnostics.  Program will exit.

我知道这是一个我应该知道答案的问题,但我做错了什么?

最佳答案

用分号代替冒号:

java -classpath .;ojdbc6.jar DBDiagnostics <connectionString>

关于java - 在命令行运行 java 程序,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/495893/

相关文章:

java - Android - 添加按钮标题时的随机整数值

java - 列表中的列表

Java .JAR 到桌面快捷方式/适用于 Windows、Mac 和 debian 的适当应用程序

java - 如何将树形图的全部内容打印到 J 文本框?

java - 如何为maven项目设置类路径

java - 使用 Ivy 的类路径问题

java - 在 RMI 注册表中设置类路径是否必要/重要?

java - 如何创建可以从不同类访问的全局变量列表?

maven - 从 JDK 设置 javax.xml.ws.Service,而不是使用 maven 的 javaee-api

java - 类路径中带有属性文件的外部库的导入未解决