7

さて、Javaプロジェクトがあり、プロジェクトエクスプローラーのMaven依存関係プロジェクトフォルダーの下にjarフォルダーがあり、その中にファイルがあり.classます。これで、をクリックしてファイルをJavaファイルとしてDownload Sources表示できますが、Eclipseで編集できません。.class

私は何をすべきか?

4

5 に答える 5

3

.classファイルを編集することはできません。javaソースコードに含まれているファイルのみを編集して再コンパイルできます。

によってダウンロードされるソースは、コードの調査を支援するために、特定のプロジェクトに対して特定の時間にmavenによって生成されたプロジェクトSNAPSHOTmaven source pluginですが、コードを変更することはできません。

これらのソースはクラスパスにバインドして、IDEでプロジェクトソースをナビゲートするために使用できますが、それでも読み取り専用のままです。

于 2013-02-26T21:40:40.027 に答える
0

jarおよびソースjarを直接編集することはできません。ソースコードをダウンロードして編集する必要があります。次に、ビルドプロセスを実行してjarを再ビルドし、mavenリポジトリに新しいバージョンとしてインストールする必要があります。

于 2013-02-26T21:40:52.607 に答える
0

クラスファイルは、実行可能プログラムの一部となるように準備されたコンパイル済みバイナリです。

それらを変更することは、コンパイルされたソースコードを変更する技術です。あなたはおそらくそれをしたくないでしょう。置換を生成する場合は、プロジェクト全体をダウンロードして再コンパイルします。

あなたはそのような行動の下で他の特定のことをする義務があるかもしれません、法律によってあなたはソフトウェアのライセンスを遵守しなければなりません、そして再コンパイルと再配布(あなたが再コンパイルしなければならない場合あなたがすることです)はしばしばはるかに重い負担をかけます開発者は単に「使用」するだけではありません(ライセンスによって異なります)。

于 2013-02-26T21:42:55.733 に答える
0

前述のように、.classファイルを変更することはできません。依存関係のソースJavaファイルは、次の方法で入手できる場合はダウンロードできます。

mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc
于 2013-10-23T22:50:56.437 に答える
0

(混乱している読者の場合:Eclipseは、Maven構成を介して、既知の/利用可能な(おそらく独自の)プロジェクトソースファイルにジャンプして、以前にパッケージ化されたjar(*.classファイルを含む)を介してコードに実際にリンクされているときに編集する方法を知っています)

(私たちは同じ問題を抱えていましたが、それはいくつかの調整の後に以前は機能していました、そして私たちはこれを理解するためにかなりの時間を費やします...)

私たちの(典型的なEARアーキタイプ)dir構造:

[projx]
  |- [ejb]
       |- pom.xml
            ...
            <!-- A) PROBLEM: dependency resolution can't work in [web]/src/**/* -->
            <version>1.0-SNAPSHOT</version>

            <!-- B) OK: this is what we (and probably you) wanted -->
            <!-- <version>2.0.1-SNAPSHOT</version> -->
            ...
  |- [web]
       |- pom.xml
            ...
            <version>2.0.1-SNAPSHOT</version>
            ...
            <dependency>
                <groupId>...</groupId>
                <artifactId>projx-ejb</artifactId>
                <type>ejb</type>

                <!-- C) a specific older version here would help it as well 
                        if you need it -->
                <!-- <version>1.0.3.Final</version> -->

                <scope>provided</scope>
            </dependency>
            ...
  |- [ear]
       |- pom.xml
            ...
            <version>2.0.1-SNAPSHOT</version>
            ...
  |- pom.xml

       <project ...>
        ...
        <version>2.0.1-SNAPSHOT</version>
        ...
        <modules>
          <module>ejb</module>
          <module>web</module>
          <module>ear</module>
        </modules>
        ...

したがって、問題は、 (A))を増やすのを忘れたこと[ejb]/pom.xml//project/versionです。 B) (実際にはグローバルプロパティを参照)と同様に調整した後、それは再び魅力のように機能しました。[projx]/pom.xml//project/properties/projx.version

(たとえば、 `projx-ejb-1.0.3.Final.jar、JARバージョンなど、古いバージョンに明示的に依存していた場合は、Cを選択できたはずです)もちろん、ワークスペースの解決が再び機能しないアプローチは当然です。 。)

于 2015-08-31T10:12:13.483 に答える