2010-12-16 35 views
2

私のプログラムにはクラスがあります。開発中です。 csvファイルを読み込んで処理するのはOpenCSVクラスです。インポートしてもクラスが見つかりません。

Eclipseのクラスパスにインポートされました。また、import au.com.bytecode.opencsv.*;によってインポートされました。 Eclipseはエラーを表示しておらず、これは失敗します。Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);

私はこの行でなぜ失敗するのかについて頭を悩ますことはできません。私も私のプロジェクトにすべてのソースコードをインポートしようとしましたが、それは常にClassNotFoundエラーで失敗します。それは、ApacheのTomcat 6サーバー上で動作するJSPアプリケーションです。

+0

eclipseでもアプリケーションを起動しますか? – aioobe

+0

これも言いたいことを忘れていました...それはtomcatで動作するJSPアプリケーションです – Gabriel

+0

私の答えが更新されました。 opencsvライブラリがWebアプリケーションのクラスパス上にあることを確認してください。 – aioobe

答えて

3

クラス名を完全修飾する必要があります。 Class.forNameのドキュメントから

Class.forName("au.com.bytecode.opencsv.CSVReader", false, null); 

をお試しください:このメソッドは見つけようとし、負荷(getNameが返す形式と同じ形式で)クラスまたはインタフェースため完全修飾名を指定された

、クラスまたはインタフェースをリンクします。

importステートメントは、コンパイル時に使用されています。 (importのバイトコードにはトレースがありません。)したがって、"CSVReader"を読み込むクラスローダーは、あなたが話しているパッケージを知ることができません(実際にはデフォルトパッケージのクラスを探します)。あなたのアップデートについて


...

あなたはopencsvライブラリは、Webアプリケーションのクラスパス上にあることを確認する必要があります。コンパイル中にそれが周りにあるのは十分ではありません...

+0

申し訳ありません...私の説明を更新するのを忘れました...私は投稿する前にこれを試しました。 – Gabriel

+0

私のクラスパスにもあり、これもアプリケーションとともにエクスポートされます。 – Gabriel

+0

スペルを再確認し、実行時にライブラリを使用できることを確認してください。それがあなたのクラスパス上にあり、十分な権限を持っているなら、それはうまくいくはずです。 – aioobe

0

Class.forName()のFQCN(完全修飾クラス名)を使用する必要があります。

2

配備された.warファイルのWEB-INF/libまたはWEB-INF/classesに必要なクラスはありますか?

+0

私はそれをまだエクスポートしていません...私はサーバーを実行するときに私はそれを行う必要があります日食からApacheのサーバーを実行する----私はそれをエクスポートしようとし、そこにない...奇妙です – Gabriel

1

srcフォルダにCSV形式のjarファイルを移動してみてください、その後、次の操作を行います あなたのプロジェクト - >右クリック - >プロパティ - > Javaのビルドパス - >ライブラリ - >ジャーを追加 - > yourjar.jar

すでにsrcフォルダにcsv jarファイルがある場合は、メインプロジェクトフォルダに新しいフォルダ "lib"を作成し、このcsv jarファイルを追加して上記の手順に従ってください。

関連する問題