1

ファイルを受信して​​ローカルマシンのファイルディレクトリに書き込むことができる署名付きアプレットを作成しました。私はWindows7でNetBeansを使用しています。Appletviewerでは、すべてが正しく実行されます。しかし、WebブラウザでWebページとのコンテキストでアプレットを実行すると、アプレットはローカルディレクトリにファイルを作成できますが、copyFile()からのメソッドを使用できませんapache common.io。を使用して作成されたファイルに書き込むことはできますが、を使用することはできbufferedWriter()ませんfileWriter。Javaライブラリのを使用してファイルを.wavから.mp3にトランスコードする必要がありますEncoderが、ブラウザで機能しません。(ユーザーのホームフォルダーと他のフォルダーを試しましたが、結果は同じです。)

これが、ファイルコピーを実装するための私の試みのコードです。例外はスローされませんが、ファイルもコピーされません。

 try {
   FileUtils.copyFile(source, target);
 } catch(IOException e){
   jLabel4.setText("Error: " + e.getMessage());    
 }

例外をキャッチできるので、コピーを実行するボタンを押したときのJavaコンソールからのテキストは次のとおりです。

 try { FileUtils.copyFile(fl1, fl2); } catch (IOException ex) { ex.printStackTrace(); jLabel4.setText("Error: " + ex.getMessage()); }

これが私のJavaコンソールテキストです:

basic: Told clients applet is started
network: Cache entry not found [url: http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar, version: null]
network: Connecting http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar with proxy=DIRECT
network: Connecting http://localhost:8084/ with proxy=DIRECT
network: Cache entry not found [url: http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar, version: null]
network: Cache entry not found [url: http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar, version: null]
network: Connecting http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar with proxy=DIRECT
network: Connecting http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar with proxy=DIRECT
network: Cache entry not found [url: http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar, version: null]
network: Connecting http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar with proxy=DIRECT
network: Cache entry not found [url: http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar, version: null]
network: Cache entry not found [url: http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar, version: null]
network: Connecting http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar with proxy=DIRECT
network: Connecting http://localhost:8084/Rozhlas_jsf/lib/commons-io-2.4.jar with proxy=DIRECT
network: Cache entry not found [url: http://localhost:8084/Rozhlas_jsf/, version: null]
network: Cache entry not found [url: http://localhost:8084/Rozhlas_jsf/org/apache/commons/io/FileUtils.class, version: null]
network: Connecting http://localhost:8084/Rozhlas_jsf/org/apache/commons/io/FileUtils.class with proxy=DIRECT
Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils
    at SoundApplet.SoundApplet.jButton2ActionPerformed(SoundApplet.java:480)
    at SoundApplet.SoundApplet.access$800(SoundApplet.java:42)
    at SoundApplet.SoundApplet$11.actionPerformed(SoundApplet.java:304)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 38 more

インポートされたライブラリには問題があるようです。librariesfolderを右クリックしてjarを追加し、jarを追加しました。私は自分のプロジェクトフォルダの画像にアクセスします。問題を理解するのに役立つかもしれませんが、コメントの数がすでに10より少ないので、それを私に伝えることができます。

4

2 に答える 2

0

commons-io jarは、ブラウザーがダウンロードする資料に含まれていないため、その中のクラスは存在しません。jarをブラウザーに含める方法を理解するか、jarjarまたはshadeを使用して、すべての部分を含む1つの大きなjarを作成することができます。どうやら、commons-ioをクラスパスに追加すると、netbeansは正しく設定されません。

于 2012-11-25T17:32:19.017 に答える
0

問題が解決しました!!

私のように絶望的な人々のための小さなチュートリアルがあります

  1. Webプロジェクトのプロパティ/パッキングオプションで、アプレットプロジェクトを追加します。これにより、アプレットの.jarファイルがコンパイルされ、webprojectの実行時にwebrojectのbuild/webフォルダーに自動的にコピーされます。

  2. APpletに外部ライブラリを使用する場合は、それらの.jarをwebrojectのbuild/webフォルダーに追加する必要があります。これで、[Webプロジェクトの実行]をクリックすると、アプレットが自動的にwebrojectのbuild / webフォルダーにコンパイルされます。ここには、外部libs.jarもあります。(ビルドフォルダ全体が削除されて再度ビルドされるため、プロジェクトのクリーンアップに注意してください。ただし、外部ライブラリ.jarsがない場合は、.jarsをここに再度コピーする必要があります)

  3. ここで、このタグを使用するために、アプレットをロードするために必要なことをhtmlページで伝える必要があります。

    <applet codebase="http://localhost:8084/<nameOfyourWebProject>" code="<package>.<appletFileName>" archive="Applet.jar, <EXternalLibName1>.jar, <EXternalLibName2>.jar... " width="500" height="500"></applet>

コードベースは通常、ビルド/ Webフォルダー(ここにもindex.html)であるため、これにより、Javaはここからjarを検索すると言います。コードは、開始アプレットクラスへのパスです。アーカイブはどのjarがロードされるかを示しているので、アプレットのjarと外部libsjarもロードする必要があります。必要なjarの数を指定できます...これで、Webプロジェクトを実行し、ロードされたアップルを外部libjarで楽しむことができます。ただし、署名されていないアプレットカント(アプレットができることとカント)を実行したい場合は、applet.jarに署名する必要があり(プロジェクトプロパティを介して可能)、アプレットに使用されるすべてのjarに署名する必要があります(これは、 keytoolとjarsignutulityはjavaで配布されます)

私はこの情報を知るために多くの時間を費やし、プロジェクトを成功裏に実行したので、この小さなチュートリアルが無駄な時間を止めるのに役立つことを願っています:)

于 2012-11-28T01:38:11.757 に答える