Tomcatのプロジェクトのクラスパスの通し方

このQ&Aのポイント
  • Tomcatのプロジェクトでのクラスパスの通し方について教えてください。
  • Eclipse環境下でTomcatのみのサーバにアプリを配置するとプロパティファイルの場所が分からなくなるため、設定方法を知りたいです。
  • 現在はソースコードに実アドレスを指定して回避していますが、環境が変わった時に困ることがあります。
回答を見る
  • ベストアンサー

Tomcatのプロジェクトのクラスパスの通し方

いつもお世話になっております。 当方、Tomcat5.xとEclipse3.2でWebアプリ(Struts使用)を開発しております。 Eclipse環境下で、JVMの設定を追加して.propertiesファイルの置き場を指定しているのですが、Tomcatのみのサーバにアプリを配置するとプロパティファイルの場所が分からなくなるらしく(CLASSPATHが通っていない?)エラーになってしまいます。 private String fileName = "mail.properties"; private String properties = null; public MailUtil() { this.properties = this.getClass().getClassLoader().getResource(this.fileName).toString(); ←ここでNullPoingter this.properties = this.properties.substring(6); } 実際に配置する際の設定方法をご教示頂けないでしょうか? 今はソースコードに実アドレスを指定して回避しておりますが、環境が変わった時などに困ってしまいます。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30536
noname#30536
回答No.1

Tomcatのクラスパスを通すには、 まずはデフォルトとして、 1.%JAVA_HOME%/jre/lib/extのjarファイル 2.%TOMCAT_HOME%/commos/lib, %TOMCAT_HOME%/commons/classes 3.%TOMCAT_HOME%/server/lib, %TOMCAT_HOME%/server/classes 4.%TOMCAT_HOME%/shared/lib, %TOMCAT_HOME%/shared/classes 5.WEB-INF/lib, WEB-INF/classe が、あります。 libには、jarファイルを、classesには、jar化されていないclassファイルやpropertiesなどのリソースファイルを置きます。 あとは、%TOMCAT_HOME%/bin/を改造して明示的にclasspathを設定する方法などがあります。 詳しくは、参考URLに載ってます。

参考URL:
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/class-loader-howto.html
kagemarurx
質問者

お礼

ご回答ありがとうございます。 ご指摘の5.にプロパティファイルを配置したら解決いたしました。

関連するQ&A

  • tomcat上でのpropertiesファイルの扱いについて

    内容)tomcat起動時にpropertiesファイルの内容を変更しても、有効にならないのは仕様でしょうか。 Servletから以下のコマンドを使用し、propertiesファイルを読み込む プログラムを作成しました。 private static final String FILE_NAME = "test.properties"; InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream( FILE_NAME ); プログラムを実行し、FILE_NAMEの各キー値をメモしました。 FILE_NAMEの各キーの値を編集後(tomcatの再起動はしていない)、 再度プログラムを実行したところ、以前のpropertiesファイルの キー値が返ってきてしまいました。 これは仕様でしょうか。

    • ベストアンサー
    • Java
  • Tomcatプロジェクトと動的Webプロジェクト

    EclipseにてWebアプリを作成しようとしているのですが 下記サイトで「J2EE仕様で定められているプログラム配置構成」 http://www.javaroad.jp/opensource/js_tomcat2.htm ということでフォルダ構成が掲載されています。 EclipseにてTomcatプロジェクトを作成するとルートディレクトリの 配下にWEB-INFその下にclassesフォルダ や libフォルダ ができると いった具合になります。 しかし、動的Webプロジェクトではルートディレクトリの配下にWebContent その下にWEB-INFlibフォルダ が存在しclassesフォルダは別の場所に存在しています。 動的WebプロジェクトはJ2EE仕様に従っていないということでしょうか。 また、そうであるならば仕様に従っていないことによる不利益があったりするのでしょうか。 Tomcatプロジェクトと動的Webプロジェクトならば動的Webプロジェクトで開発したほうがよい というWebの記述も見かけたりしたのですがどちらのプロジェクトで開発を行うのが よいのでしょうか。

    • ベストアンサー
    • Java
  • Tomcatプロジェクトの.propertiesファイルの置き場

    当方、Tomcat5.0,Eclipseでサーブレットを開発しております。 初歩的な質問で申し訳ありませんが、プロパティファイルの置き場所が 分からず難儀しております。 どなたかご教示願います。 prop.load(new FileInputStream("C:/work/workspace/worktools/mail.properties")); 上記の様にフルパスを指定すると認識するのですが、 prop.load(new FileInputStream("mail.properties")); この様にパスを省略するとFileNotFoundExceptionが発生してしまいます。WEB-INF直下にファイルを置いてるのですが、間違いなのでしょうか?

    • ベストアンサー
    • Java
  • SVFの設定について:クラスパスが通ってない?

    現在SVF(v6.2c)を使ってアプリを開発しております。 Webアプリケーションではなく、普通(?)のjavaのアプリです。 eclipseで開発しており、eclipseから実行すると無事PDFが出力されるのですが、 アプリをjarにかためてコマンドで実行すると、 「vfreport.properties not found (use default properties)」 というエラーで実行できません。(エラーコードはcode:[-1]です) 調べてパスが通っていないのだとわかったので、 実行PCの環境変数CLASSPATHにsvf.jarを追加したのですが、 それでも同じエラーで実行できません。 追加したパスは、 C:\SVFJP\svfjpd\lib\svf.jar です。 eclipseの.classpathでのsvf関連のものは、 <classpathentry kind="lib" path="lib/svf/BSPro.jar"/> <classpathentry kind="lib" path="lib/svf/svfpstat.jar"/> <classpathentry sourcepath="lib/svf/svfpstat.jar" kind="lib" path="lib/svf/svf.jar"/> となっています。 クラスパスの通し方が間違っているのでしょうか…? 何かわかる方がいらっしゃいましたら、教えてください。。。

    • ベストアンサー
    • Java
  • Tomcat3.2.4でのヒープの設定

    Tomcatでヒープ領域を割り当てようと思っています。 環境は、Windows2000 Server + JDK1.3.1_12です。 wrapper.propertiesで wrapper.cmd_line=$(wrapper.javabin) "-Xms256m -Xmx512m" -classpath $(wrapper.class_path) $(wrapper.startup_class) -config $(wrapper.server_xml) -home $(wrapper.tomcat_home) のように"-Xms256m -Xmx512m"と指定すれば動いたはずですが、これを指定するとnet start tomcatコマンドで起動しなくなります。 記述方法がおかしいのでしょうか。 ご存知の方教えて下さい。 宜しくお願いします。

    • ベストアンサー
    • Java
  • eclipse上でtomcatが機能しておりません

    初心者です。 eclipse上でtomcatサーバを起動しても、http://localhost:8080/にアクセスできない状況です。 アクセスできるようにするためには何が足りず、どうする必要があるでしょうか? よろしくお願いします。 基本的な部分での理解が足りていないと思うのですが、参考に現在の状況を乗せておきます。 <現状> ・startup.bat/shutdown.batを実行すればhttp://localhost:8080/にアクセスできる。 ・tomcat6.exeを実行してもなにも起きない。(「開く」「管理者として実行」共に同じ) ・tomcat6w.exeを実行すると「指定されたサービスはインストールされたサービスとして存在しません」とエラーが出る。 ・コンパネ→管理ツール→サービスを見ると、サービス一覧にtomcatは入っておらず、サービスに登録されていないらしい。 ・eclipseメニューバーでのtomcatの起動/停止は機能していない。(エラーが出る) ・eclipse上でtomcatサーバを起動した際、サーバに乗ってるアプリも起動していない。

    • ベストアンサー
    • Java
  • tomcatのエラー 404 

    これからJSPを勉強したいと思っている者です。 宜しくお願いいたします。 早速、質問です。 Tomcatを起動しhttp://locaohost:8080でページは表示されるのですが、http://localhost:8080/PG2/test1.jsp←この様に指定すると The requested resource (/PG2/test1.jsp) is not available.というメッセージがでて開く事が出来ません。 似た様な質問があったので自分なりに調べてみましたができませんでした。 ご教授くださいませ。 宜しくお願いいたします。 環境変数は PATH C:\j2sdk1.4.2_11\bin CATALINA_HOME C:\Program Files\Apache Software Foundation\Tomcat 5.5 CLASSPATH C:\j2sdk1.4.2_11\lib\dt.jar; C:\j2sdk1.4.2_11lib\tools.jar; C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet_api.jar; C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\jsp_api.jar; JAVA_HOME C:\j2sdk1.4.2_11 OS WindowsXP 後、eclipsの[ウィンドウ]→[設定]→[tomcat]→[JVMの設定]のJREはjre1.5.0._06になっています。 j2sdk1.4.2_11ではエラーがでます。 足りない情報ありましたら教えてください。 宜しくお願いいたします。

  • EclipseでのJavaサーブレット開発で、プロジェクトに対するビルドパスの設定について

    Javaプログラミング初心者です。 MacOS 10.5環境で、Eclipse3.5, Tomcat5.5を使ってJavaのWebアプリ開発環境を作りたいと思っています。 サーブレットを作るので ・javax.servlet.* ・javax.servlet.http.* のパッケージをimportするために、Tomcatのcommon/lib/servlet-api.jarをクラスパスに指定する必要があると思うのですが、 Eclipseで新規サーブレットを作った際に、自動的にこのクラスパス指定を行う方法はありますか? 今のところ、サーブレット作成の度に、そのプロジェクトフォルダに対してビルドパスを設定している状況です。 教えて頂けないでしょうか、よろしくお願いいたします。 (ところで、この質問をする際、投稿カテゴリーで「プログラミング」を指定しているにも関わらず、なぜか反映されないので、「その他」カテゴリで質問させて頂きます。)

  • 内部リソースファイルを取得する際のファイル名の記述方法

     ファイルを開く際の、  フォルダ構造は以下のようになっています。 MainPanel.java      base   - Chara.java      Resource - charachip - image.gif ―――Chara.javaにおいて、以下のようなコンストラクタを作成しました。(int xとint yは気にしないでください) public Chara(int x, int y, String filename){  //画像の読み込み  chara_image = ImageIO.read(getClass().getResource(filename)); } ―――MainPanel.javaで、それを呼び出し、 Chara chipfile = new Chara(3,3,"Resource/charachip/hyouga.gif");  と、してみましたが・・・この第三引数の記述、明らかに間違っていますよね・・・。  この読み取る画像ファイルの指定は、どの.javaファイル(.classファイル)のあるディレクトリをカレントディレクトリとして、又、どのような書式で記述すればよいのでしょうか?  一応最終的にはJARファイルにまとめる予定です。但し、今の段階では(当たり前ですが)classファイルの状態です。  環境は、JDK 6 Update1、Eclipse3.2.0です。 ※挿入されているスペースは全て全角です。

    • ベストアンサー
    • Java
  • Tomcatプロジェクトが正常に動作しません

    EclipseからTomcatプロジェクトで作成したwebアプリが正常に動作しません。Eclipseの表示とブラウザの表示は、以下の通りです。どのような原因が考えられるでしょうか? <Eclipseの表示> 2008/11/16 19:08:56 org.apache.catalina.core.ApplicationContext log 致命的: Error loading WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: org.apache.catalina.loader.StandardClassLoader@17599cc hoge.MyServlet java.lang.ClassNotFoundException: hoge.MyServlet at ・・・(省略)・・・ 致命的: サーブレット mysrv に例外を割り当てます java.lang.ClassNotFoundException: hoge.MyServlet at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1355) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1034) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:757) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Unknown Source) <ブラウザの表示> type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: ラッパがサーブレットクラス hoge.MyServlet 又はそれが依存するクラスを見つけることができません org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) java.lang.Thread.run(Unknown Source) 原因 java.lang.ClassNotFoundException: hoge.MyServlet org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1355) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) java.lang.Thread.run(Unknown Source) 注意 原因のすべてのスタックトレースは、Apache Tomcat/5.5.20のログに記録されています