問題タブ [apache-commons-io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
10141 参照

android - Robospice と Android Studio を使用した Commons-Io 重複エントリ エラー

次の問題に数時間取り組んでいますが、問題を解決する方法が思いつきません。Stack Overflow から次の修正を試みました ( Android Studio を 1.0 に更新すると、 MultiDex が破損し、Gradle Plugin v0.13.1 の後に Zip エントリが複製されます)、いずれも機能しませんでした。

プログラムをビルドしようとすると、次のエラーが発生します。

このエラーは、commons-io がビルド プロセスに 2 回含まれていることを示しているようです。

Android Studio と Gradle を使用して、複数の Robospice 依存関係を含めています。これは、私の Gradle ビルド ファイルの依存関係セクションです。

「gradlew -q dependencies app:dependencies」コマンドを使用してプロジェクトの依存関係ツリーを表示すると、com.octo.android.robospice:robospice:1.4.14 が commons-io ライブラリに依存していることがわかります。プロジェクトの依存関係ツリーの関連するスニペットは次のとおりです。

Gradle ビルド ファイルですべての Robospice 関連の依存関係から commons-io を除外したにもかかわらず、依存関係はまだリストされています。また、グループ名を commons-io から org.apache.commons に変更しようとしましたが、それもうまくいきませんでした。

これが解決されるまで、私のプロジェクトは停止しています。

0 投票する
1 に答える
770 参照

java - サーバーのアンマネージ スレッドで説明できない ClassNotFoundException

ClassNotFoundException: org.apache.commons.io.IOUtils次の状況で奇妙なことに直面しています。

commons-io 2.0.1 を使用する Websphere Application Server 8.0 で実行されている Web アプリケーションがあります (この jar はクラスパスに正しく配置されています)。

org.apache.commons.io.input.Tailerログファイルを追跡し、その内容を画面に表示するために使用しています。Tailer は Runnable を実装しているため、独自のスレッドで実行されます。

アプリケーションのシャットダウン時に、tailer.stop() を呼び出してスレッドを停止します。Tailer が最後に実行するのは、ログ リーダーを閉じる finally ブロックです。

その行を実行すると、ClassNotFoundException: org.apache.commons.io.IOUtils.

ClassLoader の問題かどうかを判断するために、いくつかのコードを Tailer クラスに追加して (そして jar に置き換えて) いくつかのテストを行いました。

1. Tailer のリソースを決定します。

Tailer.class.getClassLoader().getResource("org/apache/commons/io/input/Tailer.class");

出力:wsjar:file:/home/myuser/.m2/repository/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar!/org/apache/commons/io/input/Tailer.class これは正しい jar です

2. 使用しているクラスローダーは?: Tailer.class.getClassLoader();

com.ibm.ws.classloader.CompoundClassLoader@8d336acd[war:application/myApp.war]繰り返しますが、これは正しいです。

3. 前の ClassLoader から IOUtils を直接ロードしてみます。 Tailer.class.getClassLoader().loadClass("org.apache.commons.io.IOUtils");

再び ClassNotFoundException

4. ここで、最も驚くべきこと: 以下のように run メソッドの先頭に Class.forName() を追加すると、クラスが正しくロードされ、finally ブロックの IOUtils 呼び出しが機能するようになりました。どうして??

意味がありません!commons-io-2.0.1.jar の Tailer を使用していますが、まったく同じ jar 内にあるクラスを使用することはできません。しかし、run() の開始時にクラスのロードを強制すると、もう失敗しなくなります。何か案は?

これはスタックトレース全体です:

0 投票する
0 に答える
541 参照

java - 複数のファイルをフィルタリングする commons-io FileFilter

特定のリストからすべてを除外して、特定の拡張子を持つフォルダーからすべてのファイルのリストを取得する必要があります。

「org.apache.commons.io.FileUtils.listFiles()」と、タイプ IOFileFilter の「fileFilter」パラメーターを使用するバリエーションを見てきました。また、単一のファイル名を取る「NameFileFilter」など、IOFileFilter のすべての実装も調べました。

私が見ていないのは、ファイルのリストをすべて除外するための明白な規則です。正規表現のバリエーションは機能しません。

0 投票する
2 に答える
81 参照

java - Java で変更されたファイルに関する情報を取得する

Javaでファイルを監視しようとしています。ファイルの変更がいつ行われるか知りたい:

  1. 変更を行ったプロセス。
  2. 変化したこと。

また、ファイルの「最終更新日」を変更する方法があることも知っているので、誰かがそのフィールドを変更したかどうかを確認したいと思います。

「commons.io」、「DefaultFileMonitor」、「WatchService」を試してみましたが、それらから得られる情報は、変更が発生した場合と変更されたファイルだけでした。

0 投票する
1 に答える
857 参照

java - Java Commons IO は複数のファイルを追加します

Commons IO を使用して、インターネットからファイルをダウンロードしています。

これは私が使用している方法です:

この方法を使用して複数のファイルをダウンロードし、それらすべてを hello.txt ファイルに保存する方法はありますか? 上記の方法を使用すると、すべてが上書きされ、最後にダウンロードされたファイルが hello.txt ファイルに追加されます。

基本的に、複数のファイルのダウンロードを 1 つのファイルに保存する方法はありますか。

ありがとう。

0 投票する
1 に答える
677 参照

java - リソース ファイルを JAR 内から外部フォルダにプログラムでコピーする方法はありますか?

現在実行中の jar ファイル内からリソース ファイルにアクセスしようとしています。今必要なリソースは jar ファイルですが、どのファイルでも機能する方法が必要です。さまざまなソリューションを調べてみましたが、これまでのところどれも機能していません。jar 内のファイルの絶対パスを指す URL を使用しようとしましたが、うまくいかないようです。パスを確認しましたが、そのファイルを取得しているはずです。何をしても、URL は常に null を返します。Apache Commons-IO を使用しています。

これまでの私のコードは次のとおりです。

これにより、NullPointerException がスローされます。どんな助けでも大歓迎です。ありがとう。

0 投票する
2 に答える
1736 参照

groovy - 私の Gradle プロジェクトは commons-io 2.4 に依存していますが、Gradle は $GRADLE_HOME/commons-io-1.4.jar をクラスパスに入れ、失敗を引き起こします

私は最初の Gradle プラグインの機能を反復してきました。私は早い段階で commons-io が必要だと判断したので、最新バージョンである commons-io 2.4 への依存関係を追加しました。

コマンド ラインからビルドが機能し、Eclipse でエラーが発生することはなく、これはしばらくの間順調に進んでいます。

「FileUtils.write(File,String)」を使用するコードを統合しようとし始めました。以前はその方法は必要ありませんでした。Eclipse ですべての赤字を取り除いてから、コマンド ライン ビルドを試しました。

これは、次のようなエラーで失敗しました。

これは私を混乱させました。Eclipse で失敗した行に行きましたが、問題は示されませんでした。「write()」メソッドに移動しましたが、問題ないように見えました。次に、「--debug」を指定してコマンドライン ビルドを実行し、手がかりを得ました。

「javac」行を見つけたとき、「$GRADLE_HOME\lib\commons-io-1.4.jar」(「GRADLE_HOME」はちょうど私の Gradle 2.3 ディストリビューションです) が依存関係の jar の前にクラスパスにあることがわかりました。次に、1.4 jar のコードを調べたところ、そのバージョンの「FileUtils」クラスには「書き込み」メソッドがないことがわかりました。

これについて私は何をすべきですか?

更新

私の「依存関係」ブロックが役立つ可能性が高いと思います。これは次のとおりです。

「gradleApi」参照をコメントアウトしようとしましたが、効果はありませんでした。また、「groovy-all」参照に関連付けられた commons-io の「除外」を追加しようとしましたが、それでも違いはないようです。}

0 投票する
1 に答える
3409 参照

java - NoSuchMethodError 例外をデバッグするには?

次のコードを実行しています

そして得る

どうやら、古いバージョンの commons io がどこかで使用されていたようです。しかし、私はプロジェクトでそれを見ません。

実行時にクラスファイルへのパスを知ることは可能ですか?