2017-09-10 7 views
0

私は知っています、同様の質問がここで尋ねられましたが、それらのどれも私の正確な問題に適合していないようです。リソースはEclipseではロードされていますが、IntelliJではロードされていません

String htmlDocName = "TweetView.html"; 
Class thisClass = this.getClass(); 
URL htmlResourceURL = thisClass.getResource(htmlDocName); 

これはEclipseで正常に動作します:、私は次のようにTweetView.htmlのリソースURLを取得しようとしているTweetView.javaで

src 
    |__view 
     |__TweetView.java 
     |__TweetView.html 

:私は、次の(部分)のディレクトリ構造を持っています(Neon.2)、IntelliJ(2017.2.3)ではhtmlResourceURLは常にnullです。私は、HTMLファイルの場所が理想的ではないかもしれないことを知っています(リソースフォルダに入れなければなりません)。しかし、いろいろな理由で、私は今これを変更するつもりはありません。

私は、srcフォルダがIntelliJのプロジェクト構造内の "Sources"フォルダとしてマークされ、そのサブフォルダが明示的にマークされていないことがわかりました。プロジェクトがMavenを使用しているため、プロジェクト設定はEclipseとIntelliJで共有されません。注:この問題は、JAR/WARエクスポートではなく、それぞれのIDE内から直接Javaアプリケーションとしてプロジェクトを実行することに関して記述されています。

IntelliJには、どのファイルタイプをリソースと見なすべきかを定義するこれらの「リソースパターン」がありますが、ワイルドカードの有無にかかわらず.htmlを追加することで動作させることはできませんでした(IntelliJとにかく.htmlはデフォルトでリソースと見なされます)。

誰でも問題の原因を考えている人はいますか? Eclipseで動作するので、コードを変更するのではなく、IntelliJの設定で問題を解決するのが理想的です。

EDIT: はここに私のPOMです:あなただけの "Javaアプリケーションとして実行" を行う場合には、Eclipseで

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>demo</groupId> 
<artifactId>demo</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
    </plugins> 
    <resources> 
     <resource> 
      <directory>src/view</directory> 
     </resource> 
    </resources> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>com.twitter</groupId> 
     <artifactId>hbc-twitter4j</artifactId> 
     <version>2.2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-server</artifactId> 
     <version>9.4.0.M1</version> 
    </dependency> 
</dependencies> 

+0

*のHTMLファイルをそのまま残すことができます。Mavenはすべての 'src/view/* .html'ファイルをアプリケーションのクラスパスに明示的に移動させましたか?言い換えれば、コードがコンパイルされた後に 'src /'が存在せず、 –

+0

を実行しました。はい、pom.xmlののリソースとして追加しようとしましたが、何も変更されませんでした。これは、Eclipseで動作するので、特に混乱します。ポームの変更は必要ありません。 – Silas

+0

IntelliJが作成する 'build /'または 'target /'フォルダを調べて、その中の内容を見ることができますか? –

答えて

1

、私はそれが実際にMavenを実行しないと思います。一方、Intellijは通常Mavenプロジェクトを検出し、アプリケーションを実行するのに必要なタスクを実行します。

は、少なくとも、それは両方の

を使用して私の経験だターゲット/クラス/ TweetView.htmlとターゲット/クラス/ビュー/ TweetView.java

は、あなたがソースのため srcディレクトリを設定

あります(Javaファイル)が含まれていますが、リソースはsrc/viewフォルダにあります。

したがって、ビューフォルダ内のすべてのJavaクラスは、ビューフォルダ内にとどまります。ビューフォルダ内のすべてのファイル(Java以外)はルートクラスパスに移動されるため、クラスローダは指定されたクラスからの参照先を認識しません。

私の提案は、JavaファイルをMavensの推奨位置に戻すことですsrc/main/javaの場合は、プロジェクトがMavenを使用しているので、

関連する問題