#症状
http://fantom1x.blog130.fc2.com/blog-entry-117.html[参考1](http://)
http://fantom1x.blog130.fc2.com/blog-entry-116.html[参考2](http://)
上記のサイトを参考にJavaでテキストを読み込みたかったのですがタイトルのようなエラーが出てしましました。アプレットなのでmainメソッドは必要ないと思うのですがどうすればよいのでしょうか?
#ソース
Java
1import java.io.IOException; 2import java.io.UnsupportedEncodingException; 3import java.nio.charset.Charset; 4import java.nio.charset.StandardCharsets; 5import org.apache.http.HttpStatus; 6import org.apache.http.client.ClientProtocolException; 7import org.apache.http.client.methods.CloseableHttpResponse; 8import org.apache.http.client.methods.HttpGet; 9import org.apache.http.impl.client.CloseableHttpClient; 10import org.apache.http.impl.client.HttpClients; 11import org.apache.http.util.EntityUtils; 12import java.applet.*; 13import java.awt.*; 14import java.io.*; 15import java.lang.Object; 16import java.net.URL; 17 18 19public class HTTP extends Applet{ 20 String text; 21 private static final String DEFAULT_ENCORDING = "UTF-8"; //デフォルトのエンコード 22 private static final int DEFAULT_READ_LENGTH = 8192; //一度に読み込むバッファサイズ 23 24 //ストリームから読み込み、バイト配列で返す 25 public static final byte[] readStream(InputStream inputStream, int readLength) throws IOException { 26 final ByteArrayOutputStream byteStream = new ByteArrayOutputStream(readLength); //一時バッファのように使う 27 final byte[] bytes = new byte[readLength]; //read() 毎に読み込むバッファ 28 final BufferedInputStream bis = new BufferedInputStream(inputStream, readLength); 29 30 try { 31 int len = 0; 32 while ((len = bis.read(bytes, 0, readLength)) > 0) { 33 byteStream.write(bytes, 0, len); //ストリームバッファに溜め込む 34 } 35 return byteStream.toByteArray(); //byte[] に変換 36 37 } 38 finally { 39 try { 40 byteStream.reset(); //すべてのデータを破棄 41 bis.close(); //ストリームを閉じる 42 } 43 catch (Exception e){ 44 System.out.println(e); 45 } 46 } 47 } 48 49 //ストリームから読み込み、テキストエンコードして返す 50 public static final String loadText(InputStream inputStream, String charsetName) throws IOException, UnsupportedEncodingException { 51 return new String(readStream(inputStream, DEFAULT_READ_LENGTH), charsetName); 52 } 53 public static final String loadTextURL(URL url) throws IOException { 54 InputStream is = url.openStream(); //url.openConnection().getInputStream() と同じ 55 return loadText(is, DEFAULT_ENCORDING); 56 } 57 58 //メインでは... (※例外処理は省略) 59 public void init(){ 60 61 try { 62 String fileName = "test3.txt"; //html からの相対パス 63 text = loadTextURL(new URL(getCodeBase(), fileName)); //同サーバ上の場合 64 System.out.println(text); 65 } 66 catch (IOException e){ 67 System.out.println(e); 68 } 69 } 70 71 72 //↑では確認しずらいので、↓のメソッドなどで確認 73 public void paint(Graphics g) { 74 g.drawString(text, 5, 25); 75 } 76}
#エラー内容
F:>javac HTTP.java
F:>java HTTP
エラー: メイン・メソッドがクラスHTTPで見つかりません。次のようにメイン・メソッドを定義してください。
public static void main(String[] args)
またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります
#追記
すみません、実行のコマンドを間違えていました。しかしアプレットを実行しても何も表示されません。どうすればよいでしょうか?
#実行時のコマンドプロンプトの状態
F:>appletviewer HTTP
読込み中の入出力例外です: F:\HTTP (指定されたファイルが見つかりません。)
F:>appletviewer HTTP.java
#追記の追記
アプレットビューア実行後コマンドプロンプトに以下のようなエラーメッセージが表示されました。
F:>appletviewer Test.html
java.io.FileNotFoundException: F:\res\data\sample.txt (指定されたパスが見つかり ません。)
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException: String is null
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2916)
at HTTP.paint(HTTP.java:76)
at sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
at sun.awt.RepaintArea.paint(RepaintArea.java:240)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:358)
at java.awt.Component.dispatchEventImpl(Component.java:4967)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
String is null とあるのでこれはテキストが見つかってないという事でいいのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/18 01:40
2018/01/18 02:03
2018/01/18 02:16
2018/01/18 02:17
2018/01/18 02:23