Witam. Utworzyłem sobie Plug-in Project w Eclipsie i chciałem zrobić plugin, który będzie obsługiwał tabele z bazy danych. Problemem jest to, że podczas uruchomienia pluginu jako Eclipse Application po naciśnięciu utworzonego przeze mnie pluginu wywala błąd i nie chcę się połączyć z bazą. Wrzucę kod.
Klasa SQLSupport - tu mam połączenie z bazą danych
package pluginjava;
import java.sql.Connection;
public class SQLSupport {
private static String DBURL;
private static String DBUSER;
private static String DBPASS;
private static String DBDRIVER;
private Connection connection;
public SQLSupport() {
DBURL = "jdbc:oracle:thin:@localhost:1521:XE";
DBUSER = "system";
DBPASS = "12345";
DBDRIVER = "oracle.jdbc.driver.OracleDriver";
}
public boolean connectionDB() throws ClassNotFoundException, SQLException
{
System.out.println("Testowanie połączenia z Oracle JDBC");
try {
Class.forName(DBDRIVER);
} catch (ClassNotFoundException e) {
System.out.println("Gdzie jest sterownik Oracle JDBC?");
e.printStackTrace();
}
System.out.println("Sterownik Oracle JDBC zarejestrowany!");
connection = null;
try {
connection = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
} catch (SQLException e) {
System.out.println("Błąd połączenia.");
e.printStackTrace();
}
if (connection != null) {
System.out.println("Połączono z bazą!");
return true;
} else {
System.out.println("Nie udało się wykonac połączenia!");
return false;
}
}
}
Tu jest klasa, która uruchamia program po naciśnięciu pluginu - na zwykłym wyświetleniu HelloWorld za pomocą dialogu normalnie trybi, ja tylko tu wstawiłem połączenie z bazą na tej samej zasadzie
package pluginjava.actions;
import java.sql.SQLException;
/**
* Our sample action implements workbench action delegate.
* The action proxy will be created by the workbench and
* shown in the UI. When the user tries to use the action,
* this delegate will be created and execution will be
* delegated to it.
* @see IWorkbenchWindowActionDelegate
*/
public class SampleAction implements IWorkbenchWindowActionDelegate {
private IWorkbenchWindow window;
/**
* The constructor.
*/
public SampleAction() {
}
/**
* The action has been activated. The argument of the
* method represents the 'real' action sitting
* in the workbench UI.
* @see IWorkbenchWindowActionDelegate#run
*/
public void run(IAction action) {
SQLSupport datebase = new SQLSupport();
try {
if(datebase.connectionDB()) {
MessageDialog.openInformation(
window.getShell(),
"Pluginjava",
"Połączono z bazą");
} else
MessageDialog.openInformation(
window.getShell(),
"Pluginjava",
"Nie połączono z bazą");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Selection in the workbench has been changed. We
* can change the state of the 'real' action here
* if we want, but this can only happen after
* the delegate has been created.
* @see IWorkbenchWindowActionDelegate#selectionChanged
*/
public void selectionChanged(IAction action, ISelection selection) {
}
/**
* We can use this method to dispose of any system
* resources we previously allocated.
* @see IWorkbenchWindowActionDelegate#dispose
*/
public void dispose() {
}
/**
* We will cache window object in order to
* be able to provide parent shell for the message dialog.
* @see IWorkbenchWindowActionDelegate#init
*/
public void init(IWorkbenchWindow window) {
this.window = window;
}
}
Plik ojdbc6.jar mam wgrany.
Po uruchomieniu pluginu wywala mi coś takiego i nie mogę za cholerę dojść dlaczego :)
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver cannot be found by pluginjava_1.0.0.qualifier
java.sql.SQLException: No suitable driver found for jdbcthin:@localhostXE
Domyślam się, że po uruchomieniu pluginu za pomocą Eclipse Application nadal mi gdzieś brakuję tego sterownika, tylko pytanie gdzie go trzeba umieścić?