• ベストアンサー

教えてください

こんばんは。 コンパイルしたらこんなエラーがでました。 どうすればいいか教えてください。 お願いします >クラスまたはインタフェース宣言がありません

  • Java
  • 回答数9
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • misoka
  • ベストアンサー率35% (56/160)
回答No.6

とりあえず、javaするときは、.classは付けてはいけないと思います。 > C:\jdk1.2.2\bin>C:\jdk1.2.2\bin\java.exe HELLO.class これだと、HELLOパッケージのclassクラスに対してjavaしようとしている ことになってしまうのではなかったか、と。ということで、 C:\jdk1.2.2\bin>java HELLO で実行するのが、一応スタンダードなやり方ということになります... > void attck()にどうやってmainをつけるのですか? mainはstaticなメソッドとして実装しますから、付けるとすれば、 HELLOクラスに付けることになるでしょう。 けれども、HELLOクラスが何かのクラスをextendsしていれば、 付けなくても、このエラーが出ない可能性はあります。 ところで、「javaからcgiにアクセスする」ってどういうことですか?(^^;

その他の回答 (8)

  • stanaka
  • ベストアンサー率44% (13/29)
回答No.9

 たくさんの人たちがお答えになっておられますので,もはや必要ないかとも思いますが,ちょっとしゃべりたいことを付け加えておきます.  今までの質問の流れからして,何らかのサンプルプログラムを丸写しで打ち込んで,それをコンパイルしようとしておられるものと思われます.  言語を勉強するのに,その方法自体はまっとうだとは思うのですが,もう少しドキュメントを読み込まれてからのほうがいいのでは?.  main()メソッドの事を知らなかったり,クラス宣言をしなかったり,さらにプログラム中に全角スペースを使用するなど,入門書の最初のほうだけでも読んでおられれば分かることだと思います.  とりあえず,attack()というメソッドを動かしたいのなら,下記BLACKTALONさんのmain()メソッドに加えて, public static void main(String Args[]){ HELLO h = new HELLO(); h.attack(); }  が必要です.普通なら,こんなことまでは言わなくても分かると思いますが.  非常に失礼なんですが,一応聞かせてもらいますが,ソースコードを書いて質問なさらないことといい,HTTPプロトコルを直接いじって何かしようとしておられることといい,attack()というメソッド名といい,どこかから拾ってきた妙なことをするプログラムを何も知らないでただ動かそうとしているわけではありませんよね?.違っていたら本当にごめんなさい.こんなことをここに書くのはかなり礼を失しているかもしれません.  まぁ,そんなことするのにわざわざJavaを使う人もいないと思いますが.

回答No.8

HELLOクラス内に public static void main(String Args[]){ HELLO h = new HELLO(); } と追加してください。 「非常に基礎的」な事を質問していることから質問者はJavaに関する知識が 乏しいものと思われます。 いちいち質問していても解決までに時間がかかるでしょうから、 Java言語に関する入門書やそれに類するWebページなどを多数当たって 独習されることをおすすめします。 なお、使用するエディタは全角空白・タブ文字を色などで表示したり 単語の強調表示などの機能のあるエディタを使用されることをおすすめします。 プログラミング上のトラブルで解決の足がかりになると思われる ページと参考書をあげておきます。 http://www.gimlay.org/~andoh/hatena/java/ http://java-house.etl.go.jp/ml/topics/ http://www.shoeisha.com/book/Detail.asp?bid=913&tk=%93%C6%8FK+Java なお、URL中のMailing Listは初心者質問のサポートを目的としたもの ではないのでご注意ください。

回答No.7

ちゅうかクラスファイルにクラスパス通っているんですかね? .javaのせいもあるけど。

  • mkim
  • ベストアンサー率67% (25/37)
回答No.5

文頭にてパッケージ宣言の後に java.net.Socketとjava.io.PrintWriterをimportすることで 解決できると思われます。 import java.net.Socket; import java.io.PrintWriter; これで見つかりませんと言うのは、回避できます。 これでも、初期化されていません。と言うのが残るようでしたら 一度、PrintWriter pw = null; としてから、pw = new PrintWriter( socket.getOutputStream() ); と言う風にしてください。 コンパイラによってこれを注意するのもありますから。。。

takako20
質問者

補足

ありがとうございます。クラスファイルができました。 しかし、実行ができません。 ------コマンドを実行します------ C:\jdk1.2.2\bin>C:\jdk1.2.2\bin\java.exe HELLO.class Exception in thread "main" java.lang.NoClassDefFoundError: HELLO/class C:\jdk1.2.2\bin> void attck()にどうやってmainをつけるのですか?

  • stanaka
  • ベストアンサー率44% (13/29)
回答No.4

void の前に全角スペース入力してませんか?.

takako20
質問者

補足

ありがとうございます。 アドバイスどおりにコンパイルしたら文字エラーはでなくなったのですが こんなエラーがでました。 HELLO.java:10: クラス Socket が見つかりません。 Socket socket = new Socket( host, port ); ^ HELLO.java:10: クラス Socket が見つかりません。 Socket socket = new Socket( host, port ); ^ HELLO.java:11: クラス PrintWriter が見つかりません。 PrintWriter pw = new PrintWriter( socket.getOutputStream() ); ^ HELLO.java:11: クラス PrintWriter が見つかりません。 PrintWriter pw = new PrintWriter( socket.getOutputStream() ); ^ HELLO.java:13: 変数 pw は初期化されていない可能性があります。 pw.println( method + " " + code + " HTTP/1.0" ); ^ HELLO.java:24: 変数 pw は初期化されていない可能性があります。 pw.close(); ^ エラー 6 個 なにかコンポーネントをインストールしないけないでしょうか?

  • stanaka
  • ベストアンサー率44% (13/29)
回答No.3

 しばらくJavaいじってないので、忘れてしまったのですが、下のメッセージは、確か、日本語文字列部分の漢字コードが間違ってるか、プログラムコード中に使えない文字があるときにでたエラーだったと思います。  一応書いておきますが(知ってたらごめんなさい)、Javaのソースファイルは一つのファイルに最低でも以下の記述が必要だと思います。 class クラス名{ }  これだけだとエラーでたっけ?。  クラス名の後ろの{と}の間に、メソッドやメンバ変数をずらずら記述してください。  プログラミングのエラーなどに関する質問は、わからない部分、エラーがでた部分だけでも、それがわからない場合はエラーメッセージを書いて質問するのがマナーだと思いますよ。

takako20
質問者

補足

すいません。これです。 HELLO.java:3: 入力文字が無効です。  void attack() { ^ エラー 1 個 おねがいします。

回答No.2

かんたんなソースコード概略(簡単なもので有ればすべて)と エラーの詳細な状態をできれば教えていただきたいかと。

takako20
質問者

補足

すいません。これです。 javaからcgiにアクセスするものです。 HELLO.java:3: 入力文字が無効です。  void attack() { ^ エラー 1 個 おねがいします。

  • taropoo
  • ベストアンサー率33% (34/103)
回答No.1

お見受けした所、Javaを始められたばかりのようですね。 僕もそんなに詳しくないので他の方が答えられるのを待ったほうがいいのかもしれませんが。 ファイル名とクラス名で大文字小文字が一致していなくは無いですか? Javaは大文字と小文字を区別するので、 ファイル名がhello.javaでクラス名がHelloだったりするとエラーになります。 見当違いだったらごめんなさい。

takako20
質問者

お礼

ありがとうございます。 クラス名がありませんでした。 ところが今度はこのエラーがでました。 >入力文字が無効です。 教えてください。おねがいします。

関連するQ&A

  • クラスのメンバ関数を別ファイルで定義したときのバグ

    C++ においてヘッダファイルで宣言したクラスのメンバ関数を別のソースファイルで定義して、コンパイルするとうまくいきません。エラーは出ないのですが、同名の何もしない関数としてコンパイルされているようなのです。クラスのメンバ関数を宣言したのと同じヘッダに書くとちゃんとコンパイルされます。 どうしてそうなるのか、いまいち原因がわかりません。

  • 基本情報技術者試験のJava問題が動かない!

    基本情報技術者の学習をしている者です。 平成19年度秋期 基本情報技術者試験の Java問題(問8:待ち行列の問題)を 実際にコーディング後の、コンパイルが出来ません。 (入力済みコードは、問題文と照合して間違いないです) エラーメッセージは、 クラス WeightedQueue は public であり ファイル WeightedQueue.java で宣言しなければなりません。 クラス WeightedQueueTester は public であり ファイル WeightedQueueTester.java で宣言しなければなりません。 です。 実プログラムでトレースしてみたいのですが、 ・本試験問題が、何故コンパイルエラーになるのか? ・果たして、このコードは正しいのか? 疑問だらけです。 又、平成20年度春期の同試験 Java問題(問8:電気ポットの問題)でも、 クラス ・・・は public であり ファイル ・・・・.java で宣言しなければなりません。 クラス ・・・は public であり ファイル ・・・・.java で宣言しなければなりません。 と、同様のコンパイルエラーが出ます。 詳しい方教えて下さい。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • ヘッダーファイルでは、他のヘッダーファイルをインクルードできないのか

    Javaを仕事で使っています。 最近趣味でC++を始めました。色々形式の違いに戸惑っています。 C++では関数を宣言しなければならないので、クラス名と同じヘッダーファイルにそのクラスで使う関数を宣言して、それをインクルードしています。 そこで今、壁にぶちあたりました。 あるクラス(仮にFooとします)の関数で、他のクラス型(Hogeとします)を引数に取りたいので、ヘッダーファイルにそれを宣言しようとしているのですが、コンパイルエラーになってしまいます。 Foo.hは以下のような感じ。 #include Hoge.h 中略 GetHoge(Hoge hoge); コンパイルエラーでは error C2011: 'Hoge' : 'class' 型の再定義 などと言われます。 クラスとその同名のヘッダーファイル、という形式を変えずに 他のクラス型を引数にとる関数を作るには、どうしたらよいのでしょうか? C++に関しては全くの素人です。詳しい方、ご教示願います。

  • Delphiの変数について

    Delphiでプログラムを作成しています。 現状はとりあえずうまく動作しているようですが、グローバル変数、ローカル変数、クラス内のpublic、private内の変数?とかの宣言が整理できていません。 ほとんどがローカル変数とグローバル変数として宣言してしまっています。 今、整理している最中ですが、変数の宣言の場所を移動しても、コンパイルでエラーが出なければ、OKと考えてもいいのでしょうか? (動作中にエラーがでることはないと考えていいものでしょうか?)

  • インターフェース

    インターフェースについて学ぼうと思っているのですが、 どうもいまいち何がなんだかわからなくなっています。 インターフェースはクラスによって実装され、 実装クラスはインターフェースで宣言されている 抽象メソッドを実行する とあるのですが、実装とは何ですか? 抽象メソッドとは何ですか?

    • ベストアンサー
    • Java
  • モードレスダイアログを作成しようと思ったら....。

    環境:Win2000pro, VC++6.0sp6, MFC, ダイアログ ベースにてモードレスのダイアログ表示を行おうと思い 表示したいダイアログクラスをCModelessDlgとし、 基本となるクラスをCTestDlgとして、CTestDlgの メンバ変数にCModelessDlg* pDlg;と宣言したのですが、 コンパイルを実行すると、下記のようなエラーが出ます。 (1)error C2143: 構文エラー : ';' が '*' の前に必要です。 (2)error C2501: 'CModelessDlg' : 識別名を宣言するのに、型が指定されていません。 (3)error C2501: 'pDlg' : 識別名を宣言するのに、型が指定されていません。 宣言が間違っている時等のお馴染みのエラーですが、何故 出るのかが分りません。ダイアログクラスの作り方等が いけないのでしょうか? どなたか、推測でも構わないのでよろしくお願い致しま す。

  • Javaアソシエイツの練習問題について

    以下の問題文について、なぜ答えがそうなのか疑問が解決できないので投稿させていただきます。どなたか教えてください。 【問題文】 以下の空欄に入れてコンパイルしたとき、コンパイルエラーとなるものはどれか? import java.util.*; ( 空欄 ) class Sample() 【選択肢】 A.interface Inter{} B.class MyClass{} C.package exam; D.import java.io.*; 【回答】 C <解説> パッケージ宣言はソースファイルの先頭に1つだけ記述できるが、 複数宣言するとエラーとなる。 問題文にパッケージ宣言はないと思うのですが。。。 よろしくお願いします。

    • ベストアンサー
    • Java
  • クラスの関数へユーザー定義型の引数を渡す(VB6.0)

    お世話になります。 クラスモジュール内へ宣言した関数へユーザー定義型(標準モジュール内でPublicで宣言)の引数を渡すとコンパイルエラーとなってしまいます。 ユーザー定義型を宣言した以外の標準モジュールでは同じ関数は動きますが、Formモジュールでは動きません。 標準モジュールにしかユーザー定義型の引数を渡すことは出来ないのでしょうか??

  • オーバーライドしたメソッドで例外を投げたいとき

    お世話になります。 あるinterfaceを実装するクラスを作成しています。 そこでinterface内のメソッドを実装するわけですが、そこで例外を生成しthrowしたいと思っています。ですが、interfaceでそのメソッド定義にはその例外をthrowするようには定義されていないので、コンパイル時にエラーになります。 今は強引にNullPointerExceptionを生成するようなコードを書いて例外を発生させていますが、このようなケースではどのように記述するのが一般的なのでしょうか。 interfaceは内製ではないので変更することができません。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 「インタフェースを実装してそれが持つ抽象メソッドをオーバーライドする」

    「インタフェースを実装してそれが持つ抽象メソッドをオーバーライドする」は正しい? はじめまして。Javaのインタフェースに関する質問です。 私はこれまで、インタフェースを使うときは、インタフェースを実装してクラスを宣言し、そのクラス、またはサブクラスでインタフェースがもつすべての抽象メソッドを定義する、と理解していました。 しかし、下の例をみてください。抽象メソッドの定義を、インタフェースの実装の以前で与えています。問題無くコンパイルでき、実行できます。実行結果も以下の通りです。 インタフェースの抽象メソッドへの定義の与え方やその実行のされ方は、メソッドのオーバーライドと同様と思っていましたので、下記のコードでは「クラスBが抽象クラスではありません」や、「インタフェースの抽象メソッドがオーバーライドされていません」などの文法エラーがでると思っていました。 そこで、質問です。 インタフェースが持つ抽象メソッドの定義を与える場所について、または、これに関する説明のあるページなど、何かご存知でしたら教えてください。 ★コード★ interface X{   void show(); } class A{   public void show(){     System.out.println("A");   } } class B extends A implements X{ } public class Main{   public static void main(String[] args){     X x=new B();     x.show();   } } ★実行結果★ >java Main A ★Java環境★ java 1.6.0_21 javac 1.6.0_16

    • ベストアンサー
    • Java