長いメッセージで申し訳ありませんが、読んでいただければ幸いです。私は Scala でコースの仕事を始めました。FTPサーバーです。コマンド認識にパターンマッチングを利用しています。私はEclipseでコードを書いています。SBTにはバグがあると思いますが、それについてどこに言えばいいのかわかりません。
説明: 長いコンパイル時間。コンパイル後、IDE にエラーはありません。しかし、「問題」パネルには次の行があります。
プロジェクトのコンパイル中に SBT ビルダーがクラッシュしました。これは、Scala コンパイラまたは SBT のバグです。詳細については、エラー ログを確認してください。エラー メッセージは次のとおりです: ch.epfl.lamp.fjbg.JCode$OffsetTooBigException: オフセットが大きすぎて 16 ビットに収まりません: 38838 FTPDaemon 不明な Scala の問題
しかし、プログラムは起動して動作します。実行時の次のエラー:
スレッド「メイン」で例外 java.lang.ClassFormatError: java.lang.ClassLoader.defineClass1(Native Method) で切り捨てられたクラス ファイル java.lang.ClassLoader.defineClass(ClassLoader.java:787) で java.security.SecureClassLoader.defineClass (SecureClassLoader.java:142) で java.net.URLClassLoader.defineClass(URLClassLoader.java:447) で java.net.URLClassLoader.access$100(URLClassLoader.java:71) で java.net.URLClassLoader$1.run(URLClassLoader. java:361) で java.net.URLClassLoader$1.run(URLClassLoader.java:355) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:354) で Java. lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) java.lang.ClassLoader.loadClass(ClassLoader.java:356) at org.egslava.ftp.ControlConnection.(ControlConnection.scala:14) at org.egslava.ftp.Main$.main(Main.scala:38) at org.egslava.ftp.Main .main(メイン.スカラ)
このエラーは、 new ControlConnection().start(); を実行すると表示されます。ControlConnection は、変数 currentState (抽象クラス FtpState へのポインター) を使用します。現在の状態は、DoLogin クラスまたは WaitForCommandsState クラスのインスタンスである可能性があります。
WaitForCommands には、次のコード ブロックが含まれています。
message match{
case owner.Noop() => "200 NOOP ok\r\n";
case owner.User(_) => "530 Can't change from guest user\r\n";
case owner.Pass(_) => "230 Already logged in\r\n";
case owner.Pasv() => pasv() + "\r\n"; case owner.List() => list() + "\r\n";
case "condition" => "error";
case owner.Nlst() => nlst() + "\r\n";
case owner.TypeCMD() => ""//"200 Switching to binary mode\r\n";
case "PWD" => "257 \"" + currentDirectory + "\"\r\n";
case "SITE HELP" => "200-\r\n200\r\n";
case owner.Cwd(path) => "250 Directory successfuly changed\r\n";
case "condition2" => "error2"
case unrecognizedCommand => "500 Unrecognized command " + unrecognizedCommand + "\r\n";
}
コメント文字列 (任意) の場合: case "condition" => "error";
または case "condition2" => "error2"
エラーが消えます。
それは何ですか?