問題タブ [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.
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 に変更しようとしましたが、それもうまくいきませんでした。
これが解決されるまで、私のプロジェクトは停止しています。
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() の開始時にクラスのロードを強制すると、もう失敗しなくなります。何か案は?
これはスタックトレース全体です:
java - 複数のファイルをフィルタリングする commons-io FileFilter
特定のリストからすべてを除外して、特定の拡張子を持つフォルダーからすべてのファイルのリストを取得する必要があります。
「org.apache.commons.io.FileUtils.listFiles()」と、タイプ IOFileFilter の「fileFilter」パラメーターを使用するバリエーションを見てきました。また、単一のファイル名を取る「NameFileFilter」など、IOFileFilter のすべての実装も調べました。
私が見ていないのは、ファイルのリストをすべて除外するための明白な規則です。正規表現のバリエーションは機能しません。
java - Java で変更されたファイルに関する情報を取得する
Javaでファイルを監視しようとしています。ファイルの変更がいつ行われるか知りたい:
- 変更を行ったプロセス。
- 変化したこと。
また、ファイルの「最終更新日」を変更する方法があることも知っているので、誰かがそのフィールドを変更したかどうかを確認したいと思います。
「commons.io」、「DefaultFileMonitor」、「WatchService」を試してみましたが、それらから得られる情報は、変更が発生した場合と変更されたファイルだけでした。
java - Java Commons IO は複数のファイルを追加します
Commons IO を使用して、インターネットからファイルをダウンロードしています。
これは私が使用している方法です:
この方法を使用して複数のファイルをダウンロードし、それらすべてを hello.txt ファイルに保存する方法はありますか? 上記の方法を使用すると、すべてが上書きされ、最後にダウンロードされたファイルが hello.txt ファイルに追加されます。
基本的に、複数のファイルのダウンロードを 1 つのファイルに保存する方法はありますか。
ありがとう。
java - リソース ファイルを JAR 内から外部フォルダにプログラムでコピーする方法はありますか?
現在実行中の jar ファイル内からリソース ファイルにアクセスしようとしています。今必要なリソースは jar ファイルですが、どのファイルでも機能する方法が必要です。さまざまなソリューションを調べてみましたが、これまでのところどれも機能していません。jar 内のファイルの絶対パスを指す URL を使用しようとしましたが、うまくいかないようです。パスを確認しましたが、そのファイルを取得しているはずです。何をしても、URL は常に null を返します。Apache Commons-IO を使用しています。
これまでの私のコードは次のとおりです。
これにより、NullPointerException がスローされます。どんな助けでも大歓迎です。ありがとう。
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 の「除外」を追加しようとしましたが、それでも違いはないようです。}
java - NoSuchMethodError 例外をデバッグするには?
次のコードを実行しています
そして得る
どうやら、古いバージョンの commons io がどこかで使用されていたようです。しかし、私はプロジェクトでそれを見ません。
実行時にクラスファイルへのパスを知ることは可能ですか?