java eclipse3.5を使ってプログラミングの勉強をしています。
ThreadMain.javaというプログラムを動かすのにEchoProtocolFactoryと
ThreadPerDispatcher.javaとPoolDispatcher.javaを明示的にコンパイ
ルする必要があるのです。あるサイトを見たら、【プロジェクト】ー>【すべて再ビルド】を
選択すればよいとかかれていたのでやってみたのですが、次のようなエラーが出てしまいます。
Exception in thread "main" java.lang.ClassNotFoundException: EchoProtocolFactory
これらのクラスが書かれたソースファイルはすべて同じsocket.110というパッケージに入っています。
このエラーを取り除くには、どうすればよいのでしょうか?
分かる方お願いします。
ThreadMain.javaを載せますので、アドバイスお願いします。
package socket_110;
import java.net.*; // ServerSocket
import java.io.*; // IOException
public class ThreadMain {
public static void main(String[] args) throws Exception {
if (args.length != 3) //
throw new IllegalArgumentException("Parameter(s): [<Optional properties>]"
+ " <Port> <Protocol> <Dispatcher>");
int servPort = Integer.parseInt(args[0]); //
String protocolName = args[1]; //
String dispatcherName = args[2]; //
ServerSocket servSock = new ServerSocket(servPort);
Logger logger = new ConsoleLogger(); //
ProtocolFactory protoFactory = (ProtocolFactory) //
Class.forName(protocolName + "ProtocolFactory").newInstance();
Dispatcher dispatcher = (Dispatcher) //
Class.forName(dispatcherName + "Dispatcher").newInstance();
dispatcher.startDispatching(servSock, logger, protoFactory);
}
}
No.1ベストアンサー
- 回答日時:
細かい確認ですが、
> ThreadMain.javaというプログラムを動かすのにEchoProtocolFactoryと
ThreadPerDispatcher.javaとPoolDispatcher.javaを明示的にコンパイ
ルする必要があるのです。
エラーに出ているEchoProtocolFactoryだけ拡張子がないですが、ソースファイルではない、ということでしょうか? それともこれがファイル名そのものなんですか?
ファイル名に拡張子がついてない、というオチだったりしないでしょうか。
回答ありがとうございます。
>エラーに出ているEchoProtocolFactoryだけ拡張子がないですが、ソースファイルではない、
>ということでしょうか? それともこれがファイル名そのものなんですか?
すみません、入力ミスです。正しくは、EchoProtocolFactory.javaで、
ちゃんとしたソースファイルです。
EchoProtocolFactory.javaとThreadPerDispatcher.javaとPoolDispatcher.javaの中には、それぞれEchoProtocolFactoryクラス、ThreadPerDispatcherクラス、PoolDispatcherクラスが定義されています。
参考書には「これらのクラスは、ThreadMain.javaの中で、名前により
参照されていないので、ThreadMainと一緒に自動的にコンパイルされな
い。」とかかれています。よって、明示的にコンパイルしなくてはいけ
ないとかかれています。
socket.110というパッケージの中に、これら4つのソースファイルとこれらに関連したファイルが入っています。
socket.110
-src
--socket_110
---EchoProtocolFactory.java,ThreadPerDispatcher.java,PoolDispatcher.java,ThreadMain.java,関連しているソースファイル
EchoProtocolFactory.java、ThreadPerDispatcher.java、PoolDispatcher.javaを保存している場所がまずいのでしょうか?
No.2
- 回答日時:
ThreadMain.javaには「package socket_110」という宣言がされていますが、他のクラスでも同じ宣言をしてありますか?
ソースファイルの配置が適切かどうかは、ThreadMain以外のクラスがどのパッケージに属しているかで決まります。他のクラスもsocket_110パッケージに属する(そういうパッケージ宣言をしてある)のであれば、配置はおそらく合っています。
> socket.110というパッケージの中に、これら4つのソースファイルとこれらに関連したファイルが入っています。
用語も確認した方がよさそうですね。このsocket.110というのはパッケージではなく、Eclipse用のプロジェクト名では? Javaのパッケージの概念とは別物なので混同しないように気を付けてください。
回答ありがとうございます。知人に聞いて解決しました。次のように修正しました。
ProtocolFactory protoFactory = (ProtocolFactory) // プロトコルファクトリを取得する
Class.forName(“socket_110.” + protocolName + "ProtocolFactory").newInstance();
Dispatcher dispatcher = (Dispatcher) // ディスパッチャを取得する
Class.forName(“socket_110.” + dispatcherName + "Dispatcher").newInstance();
解答していただいた方、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VisualStudioでC++クラスを追加...
-
「メイン・マニフェスト属性が...
-
★javac★
-
Eclipse「リフレッシュ」と「ク...
-
アプリケーションをダブルクリ...
-
classファイルについて
-
スタイルシートの反映
-
「main メソッドを持つクラスが...
-
jarファイルをダブルクリックで...
-
jdbcドライバのjarファイルにク...
-
マイクラjavaでForgeを入れたい...
-
OptiFineをJAVAで開こうとする...
-
Eclipseで、プロジェクト名のと...
-
.jarファイルの中身って書き換...
-
html上で、バッチやexeファイル...
-
Eclipse(JAVA)のデバッグで他...
-
サーブレットでhtml,cssや画像...
-
コンパイル時にエラーが出てし...
-
vs codeはオフラインでも使用で...
-
セットアップファイル(MSIとEX...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
classファイルについて
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
Eclipse・プロジェクトで、フォ...
-
SVFの設定について:クラスパス...
-
【Eclipse】パッケージ・エクス...
-
earファイルを展開する方法
-
eclipse でclassesフォルダーが...
-
「メイン・マニフェスト属性が...
-
ResourceBundleクラスの使い方
-
EclipseでHTTP404エラーが出る。
-
【Eclipse】逆コンパイルでエラ...
-
jdbcドライバのjarファイルにク...
-
DOMParserを使いたいのですが
-
コンパイルをしようとするとエ...
-
java クラスファイルとソースコ...
-
VisualStudioでC++クラスを追加...
-
『ClassNotFoundException: org...
-
プログラム実行の際に、「ソー...
-
Eclipseで、クラスを新規作成す...
おすすめ情報