java - 只有从Windows'运行时才能找到postgresql驱动程序。命令提示符

时间:2016-08-11 10:02:32

标签: java postgresql jdbc

我使用Netbeans 8.1和maven,项目就像连接到postgre数据库并运行单个查询一样简单。

当我从Netbeans运行项目时,我设置的System.out.println消息告诉我与数据库的连接成功,通过以下代码中的消息" PostgreSQL JDBC Driver Registered !"

在Windows 7提示符下运行相同的项目时,如:

java -jar myproject.jar

        try {
            Class.forName("org.postgresql.Driver");
        } 
        catch (ClassNotFoundException e) {
            System.out.println("No PostgreSQL JDBC Driver found");
            System.exit(0);
        }
System.out.println("PostgreSQL JDBC Driver Registered!");

跳转到捕捉{}。

我无法解释原因。有人能帮助我吗?

编辑:如果我们可以请将此标记为重复,那就太棒了。它可能是类路径的参数,但我不想使用类路径。我正在使用的另一个应用程序,这个应用程序的一个变体,只需在不修改类路径的情况下运行,并执行完全相同的Db连接。

必须有办法实现它,可能是使用pom.xml或其他我不知道的东西

EDIT2:我很确定我以前编辑过这个,并解释说我找到了让程序正常运行的方法,而无需在Windows命令中添加类路径。 pom.xml是配置应用程序的关键。 不,重复的答案"这次没有帮助我。

2 个答案:

答案 0 :(得分:1)

它无效的原因是您忘记在命令中设置类路径。 PostgreSQL驱动程序来自jar。所以你必须传递这个jar位置的路径。自您使用以来,这些罐子位于~/.m2/repository

所以进入这个目录并搜索驱动程序,并将-cp传递给命令行,并将驱动程序位置作为参数:

java -cp $LOCATION_POSTGRESQL_DRIVER -jar myproject.jar

答案 1 :(得分:0)

然而,在Windows 7上,它比这复杂一点。问题是,如果您只是运行cmd并尝试启动或停止服务,您很可能会收到以下错误消息: 发生了系统错误5。 访问被拒绝。

要解决此问题,您需要以管理员身份启动“DOS框”,因为据我所知,在具有较少权限的帐户下打开的命令提示符窗口中,无法以管理员身份运行单个命令(有Windows中没有su和sudo命令。

一个选项是单击“开始”按钮,在“搜索程序和文件”框中键入cmd,然后按Ctrl + Shift + Enter而不是Enter。这将启动具有管理权限的“DOS框”。现在,在这个DOS框中,您可以运行其中一个命令(用您的实际版本的PostgreSQL替换“9.1”): NET START postgresql-9.1(适用于32位版本) NET STOP postgresql-9.1(适用于32位版本) NET START postgresql-x64-9.1(适用于64位版本) NET STOP postgresql-x64-9.1(适用于64位版本) 启动和停止PostgreSQL。