2016-08-11 3 views
-1

私はNetbeans 8.1とmavenを使用しています。プロジェクトはpostgre DBに接続して単一のクエリを実行するのと同じくらい簡単です。java - Windowsのコマンドプロンプトから実行した場合にのみpostgresqlドライバが見つかりました

私は、NetBeansからプロジェクトを実行すると、私はセットSystem.out.printlnメッセージは、DBへの接続は以下のコードでメッセージを渡し、成功行ったことを私に伝えます「PostgreSQLのJDBCドライバが登録!」。

同じプロジェクトは、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:私はそのIを説明する前にこれを編集していることはかなり確信していますWindowsコマンドにクラスパスを追加せずにプログラムを動作させる方法を発見しました。 pom.xmlがアプリケーションを設定する鍵でした。 いいえ、「重複した回答」は今回は私を助けませんでした。

答えて

0

しかし、Windows 7では、それより少し複雑です。問題は、単にcmdを実行してサービスを開始または停止しようとすると、おそらくこのエラーメッセージが表示されるということです。 システムエラー5が発生しました。 アクセスが拒否されました。

これを解決するには、管理者として「DOSボックス」を開始する必要があります。私の知る限り、権限の少ないアカウントで開かれたコマンドプロンプトウィンドウ内で管理者として単一のコマンドを実行することはできませんWindowsではsuとsudoのコマンドはありません)。

「スタート」ボタンをクリックし、「プログラムとファイルの検索」ボックスにcmdと入力し、EnterだけでなくCtrl + Shift + Enterを押します。これにより、管理者権限を持つ「DOSボックス」が起動します。このDOSボックスでは、これらのコマンドのうちの1つを実行することができます(PostgreSQLの実際のバージョンは「9.1」を置き換えます)。 NET START postgresql-9.1(32ビット版用) NET STOP postgresql-9.1 (32ビット版の場合) NET START postgresql-x64-9.1(64ビット版の場合) NET STOP PostgresSQLを開始および停止するには、postgresql-x64-9.1(64ビット版の場合) 。

+0

場合は実際に、それはすべてが簡単だっただろう:オープン開始とタイプcmdを右クリック - >管理者として実行します。 アプリケーションバー - >タスクマネージャ - >サービス - > postgreの開始/停止を右クリックしてください。 私は既に管理者コンソールを実行していますが、postgresサービスも実行されています。私はPGAdminを開いてDBで作業しています。 Windowsやそのプロンプトに問題があるとは思いますが、まだ見つかりません。 とにかくあなたの助けを歓迎します(: – Nihvel

1

あなたがコマンドでクラスパスを設定するのを忘れてしまったという理由があります。 PostgreSQLのドライバが入っています。したがって、この瓶の場所のパスを渡す必要があります。あなたが使用しているので、瓶は~/.m2/repositoryにあります。

だから、このディレクトリに移動して、ドライバーのための検索、およびパラメータとしてドライバの場所の行を命令する-cpを渡す:

java -cp $LOCATION_POSTGRESQL_DRIVER -jar myproject.jar 
+0

これは意味がありますが、私は開発者ではなく、私が作業しているLinuxサーバ用にこのJavaをコンパイルする必要がありますので、クラスパスをあまり知らないと私は容赦しません) 私はクラスパスをウィンドウに追加し、このjarの場所を指していますが、サーバー上で同じことをする必要がありますか? パスを追加せずにアプリケーションを実行する方法はありませんか? – Nihvel

関連する問題