Linux上的Java到MySql连接

Linux上的Java到MySql连接,java,mysql,jdbc,Java,Mysql,Jdbc,我在谷歌上搜索了这个话题,但还没有找到答案。我在AWS Amazon实例上运行Java,试图运行简单的Java到mysql数据库。我可以通过mysql命令访问db fine。这个错误快把我逼疯了 注意,我在/development下运行,它正好有jar文件 [ec2-user@ip-172-31-16-232 development]$ ls cProgram.c Java2MySql.class Java2MySql.java mysql-connector-java-5.1.12.ja

我在谷歌上搜索了这个话题,但还没有找到答案。我在AWS Amazon实例上运行Java,试图运行简单的Java到mysql数据库。我可以通过mysql命令访问db fine。这个错误快把我逼疯了

注意,我在/development下运行,它正好有jar文件

[ec2-user@ip-172-31-16-232 development]$ ls
cProgram.c  Java2MySql.class  Java2MySql.java  mysql-connector-java-5.1.12.jar 

[ec2-user@ip-172-31-16-232 development]$ echo $JAVA_HOME
/usr/lib/jvm/java

[ec2-user@ip-172-31-16-232 development]$ java -cp /home/ec2-user/development/mysql-connector-java-5.1.12.jar Java2MySql.java

[ec2-user@ip-172-31-16-232 development]$ java Java2MySql
Where is your MySQL JDBC Driver?
MySQL JDBC Driver Registered!
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/smarteregsBlog
        at java.sql.DriverManager.getConnection(DriverManager.java:596)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at Java2MySql.main(Java2MySql.java:21)
Closing connection
Java2MySql.java

public class Java2MySql
{
 public static void main(String[] args) {

  String url = "jdbc:mysql://localhost:3306/myBlog";
  String driver = "com.mysql.jdbc.Driver";
  String userName = "sam";
  String password = "Yoo!";
  Connection conn = null;
  try {
       Class.forName(driver);
     }catch (ClassNotFoundException e) {
            System.out.println("Where is your MySQL JDBC Driver?");
    }

      System.out.println("MySQL JDBC Driver Registered!");

   try{
        conn = DriverManager.getConnection(url,userName,password);

      } catch (SQLException e) {
          e.printStackTrace();
      } finally {
       try {
            System.out.println("Closing connection");
            conn.close();
          } catch (Throwable ignore){}

     }
 }

在编译类时,您不需要指定jar,在这种情况下非常简单,这样就可以完成这项工作

javac Java2MySql.java
改变这个

java -cp /home/ec2-user/development/mysql-connector-java-5.1.12.jar Java2MySql.java


您似乎只在编译时提供jar,而在尝试执行代码时不提供jar类路径:

javac -cp /home/ec2-user/development/mysql-connector-java-5.1.12.jar Java2MySql.java
我假设它是一个打字错误
javac
,而不是
java

执行代码时还需要提供jar路径。所以改变这个

java Java2MySql


注意:mysql-connector-java-5.1.12.jar只在运行时需要,因为您是动态加载类的

确保mysql连接器jar位于类路径中。将其复制到与类文件相同的文件夹中是行不通的。
或者您可以简单地将其复制到jdk的lib文件夹中。

您确定mysql-connector-java-5.1.12.jar在home/ec2 user/development下存在吗?检查mysqlconnector-jar文件在您的类路径下是否可用,除非我是盲人,[ec2]-user@ip-172-31-16-232开发]$ls Java2MySql.class Java2MySql.java mysql-connector-java-5.1.12.jar为什么不使用single
try..catch
block和
printStackTrace()
捕获异常?如果您知道通过终端运行类,我想在执行classUsage:java[-options]class[args…](执行类)或java[-options]-jar jarfile[args…](执行jar文件)我不明白有些人怎么能在不分析任何东西的情况下简单地否决投票?好的,我怎么能解决这个问题,这样我就不必输入了,假设我在我的原始帖子中显示的变量?@ironman2012修复什么?不必提供类路径?在这种情况下,你需要将它打包到一个罐子中,这个罐子的man中有一个
类路径
条目ifest.@markrotteveel,不,我的意思是如何不在每次编译和运行可执行文件时显式指定类路径?
java Java2MySql
java -cp .:/home/ec2-user/development/mysql-connector-java-5.1.12.jar Java2MySql