2017-10-04 1 views
1

Mein Liferay Portal 7 ga4 läuft auf Wildfly 10. Ich habe ein Liferay MVC Portlet erstellt und bereitgestellt. Ich versuche, MySQL-Datenbank zu verbinden, aber immer diese Fehlermeldung: java.lang.ClassNotFoundException: com.mysql.jdbc.DriverLiferay MVC Portlet java.lang.ClassNotFoundException

Ich importierte mysql-connector-java-5.1.42-bin.jar von (Direkt am Projekt klicken> Build Path> Configure Build Path> Add JARs. Es ging unter "referenzierten Bibliotheken".

enter image description here

Und hier ist der Code von view.jsp

try{ 
    String connectionURL = "jdbc:mysql://localhost/employees"; 

    Connection connection = null; 
    Statement statement = null; 
    ResultSet resultSet = null; 

    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    connection = DriverManager.getConnection(connectionURL, "root", ""); 
    statement = connection.createStatement(); 

    if(!connection.isClosed()){ 
     out.println("Successfully connected to MySQL server" + "<br/>"); 
    } 

} catch(Exception ex){  

    out.println("Unable to connect to database: "+ ex); 

} 

Kann jemand bitte Hilfe mich? Ich bin völlig neu in Liferay und Java.

Vielen Dank.

+1

Es muss nicht sein Duplikat scheint, dieses Problem zu verwenden, zwingt scheint gradle config und OSGi-Umgebung zusammenhängen. Könntest du bitte deine grddle config zeigen? – Victor

Antwort

1

Aus den Informationen gegeben, vermisst sie wahrscheinlich eine Abhängigkeit in Sie

Add gradle.build:

// https://mvnrepository.com/artifact/mysql/mysql-connector-java 
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.42' 

Rechts klicken Sie projizieren, und in Gradle, erfrischen gradle Projekt.

Denken Sie auch daran, dass, wenn Ihr Portlet unter der neuen Struktur basierend auf OSGi läuft, Ihre Umgebung ein Paket haben muss, das Ihnen die Pakete anbietet, die von diesem Jar verwendet werden. Der mit Tomcat gelieferte wird nicht berücksichtigt.

Da es sich bei dieser Version von MySQL um ein OSGi-Bundle handelt, können Sie es in Ihren Bereitstellungsordner legen oder einfach in Ihrem Modulordner ablegen.

Sie können auch andere Versionen verwenden, wenn Sie wollen ... https://www.e-systems.tech/web/guest/blog/-/blogs/liferay-with-mysql-5-7-driver-changes


Es gibt drei Fragen zu dieser Frage im Zusammenhang

  1. Bauumgebung Config
  2. Runtime-Umgebung Config
  3. Laufzeitkonfiguration

Um 1 zu beheben, reicht die angegebene Gradle-Konfiguration aus.

Um 2 zu beheben, stellen Sie sicher, dass das MySQL-Paket installiert ist. Sie können es in Ihrem Bereitstellungsordner oder in Ihrem osgi/modules-Ordner ablegen.

Um 3 zu beheben, müssen Sie die Abhängigkeit auf Paketebene in Ihrer bnb.bnd-Datei deklarieren.

3 ist wirklich seltsam, denn wenn man bndtools verwenden, die Sie normalerweise das Werkzeug fragen Sie Ihre Abhängigkeiten mit

Import-Package: *

Aber in diesem Fall zu erkennen, die Abhängigkeit von einem Klasse erstellt wird namentlich geladen, in ein String, die Sie explizit deklariert Abhängigkeit

Import-Package: com.mysql.jdbc, *

+0

Hallo Victor, ich habe die Abhängigkeit in build.gradle Datei und refresh gradle Projekt aufgenommen. Ich kann mysql_connector JAR-Datei in Project und externen Abhängigkeiten sehen, aber Fehler ist immer noch der gleiche "java.lang.ClassNotFoundException: com.mysql.jdbc.Driver". – Den

+0

Ist das rote Ausrufezeichen verschwunden? Sie haben 2 Probleme in dieser Frage, nicht nur eine – Victor

+0

Ich frage, wie Sie jetzt Ihr Laufzeitproblem beheben sollten: Legen Sie den Treiber mit Ihrem Modul in Ihren Bereitstellungsordner. – Victor

Verwandte Themen