2016-12-05 9 views
1

Ich habe eine einfache Webanwendung, die Apache Tomcat 6.0 verwendet. Ich versuche, die Eigenschaftendatei aus dem Pfad "resources/mysql.properties" zu lesen. Der Ordner "resources" befindet sich außerhalb des Ordners "src". Wenn ich versuche, das Projekt als Java-Anwendung auszuführen, funktioniert es gut. Aber es löst FileNotFoundException, wenn ich es auf dem Server ausführen.FileNotFound Ausnahme beim Ausführen auf Apache Tomcat?

Dies ist der Java-Code mit Haupt, die ich auf der Konsole ausgeführt werde.

package com.jm.test; 

import com.jm.util.PropertyUtil; 

public class CodeTester { 

    public static void main(String[] args) { 
      System.out.println(PropertyUtil.getDBPropertyValue("driver")); 
    } 

} 

Dies ist der Code der PropertyUtil.Java-Datei.

Der folgende Code gibt den Fehler bei der Ausführung über den Webserver an.

Class.forName(PropertyUtil.getDBPropertyValue("driver")); 
    con = DriverManager.getConnection(PropertyUtil.getDBPropertyValue("url"), 
    PropertyUtil.getDBPropertyValue("username"), 
    PropertyUtil.getDBPropertyValue("password")); 
    return con; 

Hier ist die Projektstruktur. Project Structure

+0

Sie sollten Ihre Eigenschaften mit [Class.getResourceAsStream] laden (http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getResourceAsStream-java.lang.String-). Ein Eintrag in einem .jar oder .war ist keine tatsächliche Datei, daher können Sie ihn nicht mit FileInputStream laden. – VGR

+0

versuchen, Dateinamen direkt ohne das ResourceDir aufzurufen und sehen, ob das hilft. Sie können auch versuchen, den Schrägstrich zu umgehen und es zu versuchen. – yogidilip

Antwort

1

How to find the working folder of a servlet based application in order to load resources

prüft dieses Thema und statt:

InputStream fileStream = new FileInputStream(new File(fileName)); 

Versuch:

InputStream fileStream = getServletContext().getResourceAsStream(fileName); 
+0

Wie bekomme ich den absoluten Pfad für alle oben genannten Eigenschaften-Dateien im Ressourcen-Ordner? Ich möchte auf sie sowohl in der Konsole als auch in der Webanwendung zugreifen. –

0

In tomcat Unterverzeichnis "/ lib" die driverDB hinzufügen.

+0

Das könnte funktionieren, aber kein guter Ratschlag. Das 'bin'-Verzeichnis von Tomcat sollte nicht für App-spezifische Ressourcen verwendet werden. – ujulu

Verwandte Themen