2

我已经在此处此处此处阅读了有关在 Java 程序中使用 Sqoop 的问题。

我想出了以下内容,但我被 ClassNotFoundException 难住了:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;

import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.SqoopOptions.FileLayout;

import com.mysql.jdbc.*;

public class SqoopExample {
    public static void main(String[] args) throws Exception {
        String driver = "com.mysql.jdbc.driver";
        Class.forName(driver);

        Configuration config = new Configuration();
        // note that this is HDFS path, rather than core path
        config.addResource(new Path("./config/core-site.xml"));
        config.addResource(new Path("./config/hdfs-site.xml"));
        FileSystem dfs = FileSystem.get(config);    

        SqoopOptions options = new SqoopOptions();
        options.setDriverClassName(driver);
        options.setConnectString("jdbc:mysql://localhost:3306/dbname");
        options.setTableName("v_webstats");
        options.setUsername("root");
        options.setNumMappers(1);

        options.setTargetDir(dfs.getWorkingDirectory()+"/TestDirectory");
        options.setFileLayout(FileLayout.TextFile);

        new com.cloudera.sqoop.tool.ImportTool().run(options);
    }
}

我确信所有的罐子都正确包含,并且我已经测试了与我的数据库服务器的连接,并且效果也很好。

确切的错误是:

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.driver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at SqoopExample.main(SqoopExample.java:14)

不知道我做错了什么。

4

1 回答 1

1

我相信 MySQL JDBC 驱动程序类的正确名称是:

com.mysql.jdbc.Driver

(注意“驱动程序”中的大写“D”)

于 2013-05-03T03:46:59.513 回答