3

私は Eclipse でプロジェクトを作成し、.java ファイルがコマンド ラインから確実にコンパイルされるようにしようとしています。私はjavac *.java、すべての .java ファイルを含むフォルダーを使用してコンパイルしようとしています。ただし、これは外部ライブラリ Joda-time からのクラスへの参照が原因でエラーになります。プロジェクト用に Eclipse が作成した次の .classpath ファイルがありますが、どうすればよいかわかりません。

    <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
    <classpathentry kind="lib" path="libs/joda-time-2.2.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

でコンパイルしようとしましたjavac -classpath *.javaが、これはより多くのエラーを生成するだけです。ソース ファイルは、「src」フォルダー内のパッケージ フォルダー内にあります。クラスパス ファイルと joda-time-2.2.jar ファイルをどこに配置すればよいですか? また、すべてをコンパイルするにはどうすればよいですか?

[編集] Windows 7 を使用しています

4

2 に答える 2

11

あなたのファイルから判断すると.classpath、これはおそらくうまくいきます:

javac -d bin -cp libs/joda-time-2.2.jar src/your/package/*.java

これは、プロジェクトのディレクトリで実行することを前提としています。

-dフラグは、javac出力ファイルを配置する場所を示します。フラグはの-cp省略形です-classpath.classpath質問のファイルに基づいてこれらのパラメーターを取得しました。

一般に、 の出力のエラーを読んで理解することで、何が必要かを理解できますjavaccannot find symbol「シンボル」がクラスパスにないため、最初は多くのエラーが発生したに違いjavacないため、それらを見つける方法がわからない可能性があります。

プロジェクトを構築する方法を理解することは非常に重要です。それは基本的な知識であり、プログラマーのコア コンピテンシーです。

このように手動でビルドする方法を理解したら、コマンド ラインでのビルドをより簡単にするビルド ツール、できれば Maven、または Ant を調べることをお勧めします。Java プロジェクトの大半は、これらのツールを使用して、コマンド ライン、自動化されたビルド システム、継続的統合などで製品をビルドします。

于 2013-04-14T07:03:08.987 に答える
1

Eclipse は基本的に、プログラムをコンパイルしてbinフォルダーに配置します。コマンドラインはそれらを同じディレクトリ自体にコンパイルします。src フォルダー自体にファイルをコンパイルしている場合は、ファイルが散らばっていることがわかります.class。Eclipse の Java コンパイラのデフォルト ディレクトリは、プロジェクトです。コマンド ラインの場合は、ソース ファイルが配置されているフォルダーです。

したがって、プロジェクトが で呼び出される場合ProjectDesktopソース ファイルの Eclipse のためのデフォルト ディレクトリはProject\srcですC:\Users\UserName\Desktop\Projectが、コマンド ラインでコンパイルする場合、デフォルト ディレクトリはC:\Users\UserName\Desktop\Project\srcです。

現在のデフォルト ディレクトリをプログラムで取得するには、次を使用します。

System.out.println("System.getProperty ("user.dir")");

ここで、コマンド ラインでコンパイルする必要がある場合は、.jarファイルをsrcフォルダーに配置することをお勧めします。

ただし、ファイルは必要ないと思い.classpathます。これがそれです。

于 2013-04-14T06:15:45.687 に答える