2010-08-29 28 views
5

Eclipse'de (JSP) bir web uygulaması oluşturuyorum ve Tomcat'i bir sunucu (Eclipse'e entegre) olarak kullanıyorum. Aşağıdaki nesneyi oluşturmalı ve yapılandırma dosyasının yolunu belirtmeliyim. Bu mutlak yol harika çalışıyor: 0) Neden göreli yol kullanamadığımı merak ediyorum. "config/sdb.ttl" olmalıdır (projenin adı bir kök ise)? Fakat bu şekilde bulamaz (NotFoundException).Göreli yol için mutlak (Eclipse, JSP)

cevap

5

Göreli disk dosya sistemi yolları, uygulamayı nasıl başlattığınıza bağlı olan geçerli çalışma dizinine bağlıdır (Eclipse'de proje klasörü olur, Komut konsolunda şu anda açılmış klasör olur, Tomcat yöneticisi/Servis, Tomacat/bin klasörü, vb. olacaktır. Bunun için Java kodunun içinden herhangi bir kontrole sahip değilsiniz, bu yüzden unutun.

JSP/Servlet'te, göreli bir web içerik yolunu (genel web içeriğinde, sizin durumda /WebContent klasöründe) bir mutlak disk dosya sistemi yoluna dönüştürmek için ServletContext#getRealPath() kullanabilirsiniz. Yani:

String relativeWebPath = "/config/sdb.ttl"; 
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath); 
Store store = StoreFactory.create(absoluteDiskPath); 
// ... 

ServletContext miras getServletContext() yöntemle servlet mevcuttur.

+0

gibi http://adderpit.com/jdk/j2eedocs/api/javax/servlet/ServletContext.html#getResourceAsStream(java.lang.String)

kullanmaktır. Bu JSP/Servlet olmadığı için getServletContext() yöntemini kullanamıyorum. JSP'de bu sınıfı başlatıyorum ve yapıcısı Store nesnesinde üretildi. Başka bir çözüm var mı? – Aliens

+0

Bir JSP dosyası, iş için [yanlış yer] (http://stackoverflow.com/questions/3177733/howto-avoid-java-code-in-jsp-files) semantik olarak ifade edilir. Yine de, JSP dosyaları bir sunucuya derlendiğinden, "ServletContext" öğesine "getServletContext()" ile de erişebilir. Aynı şeyi ifade eden 'application' örtük değişkenini de kullanabilirsiniz. Yani 'Application.getRealPath (relativeWebPath)'. Bu arada, ** "Yöntemi kullanamıyorum" demeden önce gerçekten denediniz mi? – BalusC

+0

Hey. Tabii ki denedim ve hala çalışmıyor. Beni anlıyor musun bilmiyorum. JSP'de getServletContext() öğesini çağırmıyorum. .java dosyasında/src olarak adlandırmak istiyorum ama bunu yapamam. Bu .java dosyası bir sınıftır. Ve bu sınıf JSP'de başlatıldı. – Aliens

0

Sağ/uyumlu/standart yol ı src klasöründe bulunan bir sınıfta bu Mağaza nesnesi oluşturma

servletContext.getResourceAsStream("config/sdb.ttl"); 
İlgili konular