我使用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是配置应用程序的关键。 不,重复的答案"这次没有帮助我。
答案 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。