【问题标题】:trying to change classpath through code?试图通过代码更改类路径?
【发布时间】:2012-01-03 02:06:31
【问题描述】:

我想使用 jdbc4 驱动程序连接到 postgresql 数据库,但想在程序运行期间设置类路径。目的是为数据库连接注册驱动程序。下面的代码解释了我打算做什么,但是代码不起作用(“找不到驱动程序!”)。为什么我不能这样连接?我可以通过另一种方式来实现同样的目标吗?

    String originalclasspath = System.getProperty("java.class.path");

    System.setProperty("java.class.path",originalclasspath + ";E:\\postgresql-9.0-802.jdbc4.jar");

    System.out.println(System.getProperty("java.class.path"));

    System.out.println("Checking if Driver is registered with DriverManager.");
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException cnfe) {
        System.out.println("Couldn't find the driver!");
        cnfe.printStackTrace();
        System.exit(1);
    }

请回复 提前致谢

【问题讨论】:

  • 为什么需要在代码中更改它?为什么不能在启动应用时将其设置为类路径参数的一部分?
  • 我假设用户会傻到知道什么是类路径!!??
  • 我认为它不是重复的.. 我想要它用于 jdbc
  • 这两个问题都询问如何从 Java 中更改类路径,而前面的问题有一个相当详细的答案。我看不出您的问题是面向 JDBC 的如何改变了该答案的有效性?

标签: java jdbc classpath


【解决方案1】:

根据this answer,没有办法可靠地更改系统类路径。 This other question 建议通过类加载器加载 JDBC 驱动程序 (直接链接:http://www.kfu.com/~nsayer/Java/dyn-jdbc.html)。

【讨论】:

    【解决方案2】:

    我不知道在您的程序启动后更改默认类加载器的类路径的方法。但是,如果您在运行之前绝对无法设置类路径,则可以尝试通过自定义 ClassLoader 加载类,如下所示:

    http://java.sun.com/developer/onlineTraining/Security/Fundamentals/magercises/ClassLoader/FileClassLoader.java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多