質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2431閲覧

Javaでメイン・メソッドがクラスで見つかりませんとエラーが出る

aiueoaiueoaiue

総合スコア94

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/09/09 08:17

編集2018/09/10 12:23

###実現したい事
このサイトのサンプルソースを実行したいのですが、実行時に

エラー: メイン・メソッドがクラスtestで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります ```とエラーが出てしまいます。ソースにはpublic static void main(String[] args)を記述しているのに何故このエラーが出るのかが分かりません。解決策分かる方回答お願いします。 ###ソース ```Java //test.java import java.io.*; public class test{ public static void main(String[] args) throws IOException { File file = new File("test.txt"); BufferedReader in = new BufferedReader (new InputStreamReader (new ReverseLineInputStream(file))); while(true) { String line = in.readLine(); if (line == null) { break; } System.out.println("X:" + line); } } }

###ソース2

Java

1//ReverseLineInputStream.java 2import java.io.*; 3 4public class ReverseLineInputStream extends InputStream { 5 6 RandomAccessFile in; 7 8 long currentLineStart = -1; 9 long currentLineEnd = -1; 10 long currentPos = -1; 11 long lastPosInFile = -1; 12 13 public ReverseLineInputStream(File file) throws FileNotFoundException { 14 in = new RandomAccessFile(file, "r"); 15 currentLineStart = file.length(); 16 currentLineEnd = file.length(); 17 lastPosInFile = file.length() -1; 18 currentPos = currentLineEnd; 19 } 20 21 public void findPrevLine() throws IOException { 22 23 currentLineEnd = currentLineStart; 24 25 // There are no more lines, since we are at the beginning of the file and no lines. 26 if (currentLineEnd == 0) { 27 currentLineEnd = -1; 28 currentLineStart = -1; 29 currentPos = -1; 30 return; 31 } 32 33 long filePointer = currentLineStart -1; 34 35 while ( true) { 36 filePointer--; 37 38 // we are at start of file so this is the first line in the file. 39 if (filePointer < 0) { 40 break; 41 } 42 43 in.seek(filePointer); 44 int readByte = in.readByte(); 45 46 // We ignore last LF in file. search back to find the previous LF. 47 if (readByte == 0xA && filePointer != lastPosInFile ) { 48 break; 49 } 50 } 51 // we want to start at pointer +1 so we are after the LF we found or at 0 the start of the file. 52 currentLineStart = filePointer + 1; 53 currentPos = currentLineStart; 54 } 55 56 public int read() throws IOException { 57 58 if (currentPos < currentLineEnd ) { 59 in.seek(currentPos++); 60 int readByte = in.readByte(); 61 return readByte; 62 63 } 64 else if (currentPos < 0) { 65 return -1; 66 } 67 else { 68 findPrevLine(); 69 return read(); 70 } 71 } 72}

###コンパイルと実行

javac test.java ReverseLineInputStream.java    (コンパイル)
java test ReverseLineInputStream          (実行)

###testクラスのみコンパイル実行

reverse>dir 2018/09/10 21:12 <DIR> . 2018/09/10 21:12 <DIR> .. 2018/08/30 21:16 1,306 test.txt 2018/09/09 17:05 1,275 ReverseLineInputStream.class 2018/09/09 17:02 2,030 ReverseLineInputStream.java 2018/09/09 18:49 1,011 test.class 2018/09/09 17:05 404 test.java 6 個のファイル 7,905 バイト 2 個のディレクトリ 693,164,072,960 バイトの空き領域 reverse>java test エラー: メイン・メソッドがクラスtestで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります reverse>javac *.java reverse>java test エラー: メイン・メソッドがクラスtestで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります

###実行環境
reverse>ver
Microsoft Windows [Version 10.0.17134.228]

reverse>java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

reverse>javac -version
javac 1.8.0_171

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

エラーは再現しませんでした。
イメージ説明

test.txt は test.java を cp したものです。

動作環境:
java は
$ java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
OS は
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G65
です。

投稿2018/09/10 12:07

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aiueoaiueoaiue

2018/09/10 12:24

こちらで再度実行してみましたが、結果は変わらずダメでした。
katoy

2018/09/10 12:34

$ javap test.class を実行してみてください。 私の環境では Compiled from "test.java" public class test { public test(); public static void main(java.lang.String[]) throws java.io.IOException; } と表示されました。
aiueoaiueoaiue

2018/09/10 13:31

確かにそのコマンドなら仰る通りの結果が表示されました。
katoy

2018/09/10 22:22

だとすると、なぜ   エラー: メイン・メソッドがクラスtestで見つかりません。 のエラーが出るのか?が不思議ですね。
退会済みユーザー

退会済みユーザー

2018/09/10 22:33

よくありそうなのが CLASS_PATH に別の test.class が存在していてカレントパスが設定されてないとか(ないよな
aiueoaiueoaiue

2018/09/11 07:09

その可能性ありそうです。修正してみます。
aiueoaiueoaiue

2018/09/11 07:16

test.javaのファイル名をtest999.javaに修正して上手くいきました。ありがとうございました。
guest

0

実行しようとしているのがReverseLineInputStreamクラスなのですが、こちらにmainメソッドがありません。
testクラスをコンパイル&実行しないといけないのでは?

投稿2018/09/09 09:21

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aiueoaiueoaiue

2018/09/09 09:51

testクラスをコンパイル実行しても同じエラーが出ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問