2011-07-27 33 views
2

私が書いた小さなプログラムでいくつかのバグを修正するために戻ってきましたが、パッケージが存在しないためコンパイルできません(javacによると)。パッケージが存在しないエラー

私の知る限り、私はクラスパスまたはディレクトリの内容を変更していません。その間にJavaの更新があったかどうかはわかりません。

私のルートディレクトリに、自分のプログラムを構成する4つのJavaファイルがあります。彼らはそれらに帰されるパッケージを持っていません。また、Apache CommonsのCLI javaファイルを含むルートディレクトリにorg\apache\commons\cliというディレクトリ構造があります。 Apacheファイルには、それらが存在するディレクトリ構造を反映するパッケージが含まれています。

私はコマンドjavac -verbose -d build CommandLine.javaを発行する場合、それは

CommandLine.java:28: package org.apache.commons.cli does not exist 
import org.apache.commons.cli.*; 
^ 

CommandLine.javaで失敗し、プログラムのエントリポイントです。

CLIファイルをコンパイルする試みはありません。また、あらかじめコンパイルしてもエラーは発生します。また、CLIはクラスパスでも使用できます。

javac 1.6.0_12を実行しています。

私は何ができますか/試してみませんか?

。 ANSWER FOR

EDITED:

以下受け入れたように、私はあることをコンパイルコマンドを変更:

javac -verbose -d build -classpath . CommandLine.java 

今では動作します。なぜ以前にやったのか分かりませんが、なぜ今停止したのですか?

。 PROBLEM

の原因のために編集

は、私はまた、独自のものを実行するためにCLASSPATHを使用するプログラムをインストールしました。それはユーザーに属するCLASSPATHを変更しましたが、グローバルだけを残しました。私は再びJavaクラスパスのものを追加し、再び動作します!

+0

CLASSPATH環境変数が実際に設定され、必要なライブラリを指しているかどうかを確認しましたか? – casablanca

+0

@casablancaクラスパスが設定され、正しい場所を指しています。 – masher

+0

環境変数CLASSPATHを意味する場合は間違っています。あなたは持ってはいけません。 – duffymo

答えて

1

をあなたはそのApacheのJARを解凍し、アプリケーションに.classファイルを追加しましたか?なぜあなたはCLASSPATHにJARを追加しませんでしたか?

CLASSPATH環境変数に依存してはいけません。コンパイル時にjavac.exeの場合は-classpathオプションを使用し、実行する場合はjava.exeを使用する方がよいでしょう。

+0

私はこれをスタンドアロンプ​​ログラムにする必要があるので、クラスファイルをjarファイルに含める必要があります。 – masher

+0

別のコンパイルコマンドを試しました: 'javac -verbose -d build -classpath。 CommandLine.java'。今では(何らかの理由で)動作します。 – masher

2

それはタイプミスでない限り、あなたはcom\apache\commons\cli言っ気づくが、インポートはorg.apache.commons.cli望んでいる - orgcom

+0

これはタイプミスです – masher

関連する問題