我在我的Linux机器上安装了Mysql并编写了一个示例程序来访问其中一个表。 我正在使用'mysql-connector-java-5.1.10.jar'
如果我把jar放在'jre / lib / ext'中,代码工作正常。但是,识别该jar的其他方法不起作用。我尝试设置$ CLASSPATH并尝试使用'。'当前目录。
失败时出现以下错误:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
答案 0 :(得分:0)
我通常不使用全局$CLASSPATH
变量,让它运行的最简单方法是
java -cp .;/path/to/mysql-connector-java-5.1.10.jar[;<other libs>] pkg.name.MyApplication
<强>旁注强>
如果您的应用程序导出到具有Main-Class
属性(“可执行jar”)的jar并以java -jar myjar.jar
启动,那么您必须添加所有必需的在这种情况下,jars清单的库,$CLASSPATH
和-cp
将被忽略。这就是为什么我通常不使用-jar
选项...
修改强>
回答您的其他问题:如果默认情况下当前目录已添加到类路径中,则应用程序启动的位置可能会影响应用程序本身。
想象一下jar中的应用程序和启动命令
java -cp application.jar com.example.Main
现在我们有了一个已定义的环境:只有application.jar(和jre类)的内容在classpath和应用程序的一部分上。如果当前目录自动添加到类路径中,则当前位置(以及所有子文件夹的位置)上的所有文件也将位于类路径上,是否打算。结果,如果从用户主目录启动应用程序可能会起作用,但如果从根目录(/
)启动,则可能不会。