Javaプログラムに従って書いた
import Java.io.*;
import Java.util.*;
import Java.sql.Connection;
import Java.sql.DriverManager;
import Java.sql.ResultSet;
import Java.sql.SQLException;
import Java.sql.Statement;
import Java.util.logging.Level;
import Java.util.*;
public class Sample {
public static void main (String[] args) throws IOException {
int CountComputers;
FileInputStream fstream = new FileInputStream(
"/export/hadoop-1.0.1/bin/countcomputers.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String result=br.readLine();
CountComputers=Integer.parseInt(result);
input.close();
fstream.close();
Connection con = null;
Statement st = null;
ResultSet rs = null;
String url = "jdbc:postgresql://192.168.1.8:5432/NexentaSearch";
String user = "postgres";
String password = "valter89";
ArrayList<String> paths = new ArrayList<String>();
try
{
con = DriverManager.getConnection(url, user, password);
st = con.createStatement();
rs = st.executeQuery("select path from tasks order by id");
while (rs.next()) { paths.add(rs.getString(1)); };
PrintWriter zzz = null;
try
{
zzz = new PrintWriter(new FileOutputStream("/export/hadoop-1.0.1/bin/readwaysfromdatabase.txt"));
}
catch(FileNotFoundException e)
{
System.out.println("Error");
System.exit(0);
}
for (int i=0; i<paths.size(); i++)
{
zzz.println("paths[i]=" + paths.get(i) + "\n");
}
zzz.close();
}
catch (SQLException e)
{
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
}
}
}
このプログラムをコンパイルしてjarファイルを作成しました
./javac -classpath /folder/postgresql-8.4-703.jdbc3.jar -d /Samplejavaprogram/classes /Samplejavaprogram/src/Sample.Java
./jar -cvf /Samplejavaprogram/Sample.jar -C /Samplejavaprogram/classes/ .
Jarには次のマニフェストファイルがあります
Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)
Main-Class: Sample
Class-Path: /folder/postgresql-8.4-703.jdbc3.jar
ファイル/folder/postgresql-8.4-703.jdbc3.jarも含まれています。コマンドを使用してSample.jarを起動しました
./Java -jar -Djava.library.path=/opt/jdk1.7.0_06/lib /Samplejavaprogram/Sample.jar
その結果、私は次のメッセージを受け取りました
Connection Failed! Check output console
Java.sql.SQLException: No suitable driver found for jdbc:postgresql://192.168.1.8:5432/NexentaSearch
at Java.sql.DriverManager.getConnection(DriverManager.Java:604)
at Java.sql.DriverManager.getConnection(DriverManager.Java:221)
at org.myorg.Sample.main(Sample.Java:33)
アドレス192.168.1.10のホストからファイルを起動しましたが、ホスト192.168.1.8では正常に実行されました。エラーを排除するのに役立ちます。
JDBC3ドライバーを使用しています。 JDBC4ドライバーはDriverManager
によって自動的にロードされますが、JDBC3ドライバーはロードされません。したがって、呼び出す必要があります
Class.forName("org.postgresql.Driver");
アプリケーションで1回(DriverManager#getConnection
を呼び出す前)。
または、上記のメソッド呼び出しを必要としない here からJDBC 4PostgreSQLドライバーを使用することもできます。
DriverManager.registerDriver(new org.postgresql.Driver());
を使用する
Jarコマンドを使用して、アプリケーションがデータベースサーバーとの接続を確立するために必要なファイルを抽出するだけです。例えばjar -xfjdbc_file。 javac-cpを使用してコンパイルします。 Java-cpで実行します。
以上です。それが動作します。