「Java+MySQL+Tomcatで作る掲示板とブログ」で勉強している者ですが、p148のjavaのファイル(SimpleEmail.java)のコンパイルで以下のようなエラーが出てしまい先に進めません。
*********
C:\jamyto2\classes\bbs\Q>javac -d /jamyto2/jsp/web-inf/classes -classpath /jamyt
o2/jsp/web-inf/classes;"C:/Program Files/Apache Software Foundation/Tomcat 5.5/c
ommon/lib/mail.jar" SimpleEmail.java
SimpleEmail.java:43: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xff5e: sbReturn.append(Character.toChars(0
x301c));break;//〜
^
SimpleEmail.java:44: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0x2225: sbReturn.append(Character.toChars(0
x2016));break;//‖
^
SimpleEmail.java:45: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xff0d: sbReturn.append(Character.toChars(0
x2212));break;//−
^
SimpleEmail.java:46: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xffe0: sbReturn.append(Character.toChars(0
x00a2));break;//¢
^
SimpleEmail.java:47: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xffe1: sbReturn.append(Character.toChars(0
x00a3));break;//£
^
SimpleEmail.java:48: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xffe2: sbReturn.append(Character.toChars(0
x00ac));break;//¬
^
エラー 6 個
***************
よく分からないのですが、おそらくJamesがうまく動いていない(?)のかなと思っています。
というのも、p22のJamesからメールが送信できるかどうかの
テストで以下のようになってしまいメールが送信できないからです。
***************
helo localhost
250 (・・)PC Hello localhost (0:0:0:0:0:0:0:1 [0:0:0:0:0:0:0:1])
helo localhost
250 (・・)PC Hello localhost (0:0:0:0:0:0:0:1 [0:0:0:0:0:0:0:1])
mail from:<test@example.com>
250 Sender <test@example.com> OK
rcpt to:<(・・)@gmail.com>
550 - Requested action not taken: relaying denied
***************
もし、解決の方法に検討がつきましたらよろしくお願いします。
*********
C:\jamyto2\classes\bbs\Q>javac -d /jamyto2/jsp/web-inf/classes -classpath /jamyt
o2/jsp/web-inf/classes;"C:/Program Files/Apache Software Foundation/Tomcat 5.5/c
ommon/lib/mail.jar" SimpleEmail.java
SimpleEmail.java:43: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xff5e: sbReturn.append(Character.toChars(0
x301c));break;//〜
^
SimpleEmail.java:44: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0x2225: sbReturn.append(Character.toChars(0
x2016));break;//‖
^
SimpleEmail.java:45: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xff0d: sbReturn.append(Character.toChars(0
x2212));break;//−
^
SimpleEmail.java:46: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xffe0: sbReturn.append(Character.toChars(0
x00a2));break;//¢
^
SimpleEmail.java:47: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xffe1: sbReturn.append(Character.toChars(0
x00a3));break;//£
^
SimpleEmail.java:48: シンボルを解決できません。
シンボル: メソッド toChars (int)
場所 : java.lang.Character の クラス
case 0xffe2: sbReturn.append(Character.toChars(0
x00ac));break;//¬
^
エラー 6 個
***************
よく分からないのですが、おそらくJamesがうまく動いていない(?)のかなと思っています。
というのも、p22のJamesからメールが送信できるかどうかの
テストで以下のようになってしまいメールが送信できないからです。
***************
helo localhost
250 (・・)PC Hello localhost (0:0:0:0:0:0:0:1 [0:0:0:0:0:0:0:1])
helo localhost
250 (・・)PC Hello localhost (0:0:0:0:0:0:0:1 [0:0:0:0:0:0:0:1])
mail from:<test@example.com>
250 Sender <test@example.com> OK
rcpt to:<(・・)@gmail.com>
550 - Requested action not taken: relaying denied
***************
もし、解決の方法に検討がつきましたらよろしくお願いします。
投稿:rapuntuleru[rapuntuleru]/2007年 04月 02日 03時 34分
/更新:2007年 04月 02日 03時 34分
Re:Jamesがうまく動かない・・?
by KILROY[KILROY]
たぶん Java の開発環境( JDE )のバージョンが 1.4 だからです。
Character.toChars()のサポートは 5.0 ( 1.5 )からなので、1.4 でコンパイルすると(クラスライブラリに存在しないので)エラーになります。 javac を使っているのなら、バージョンを確認しましょう。
バージョン 5.x 以降の Tomcat を動作させるためには JRE 5.0 が入っていなければいけないはずですが、前から JDE 1.4 がインストールされている場合、それがそのまま使われてしまう場合があります。 Windows をお使いでしたら、コントロールパネルから「システム>詳細>環境変数」を選んで、ちゃんと JRE 5.0 が使われるようになっているか確かめてください。
なお、 JRE のバージョンを上げたら、ついでに sbReturn も StringBuffer クラスではなく StringBuilder に変えてしまいましょう。スレッドセーフではない代わりに(一時使用のバッファとして使う場合、メソッドの外から参照されることがないので、スレッドセーフである必要はありません)、ちょっとだけ速くなるはずです。
Character.toChars()のサポートは 5.0 ( 1.5 )からなので、1.4 でコンパイルすると(クラスライブラリに存在しないので)エラーになります。 javac を使っているのなら、バージョンを確認しましょう。
バージョン 5.x 以降の Tomcat を動作させるためには JRE 5.0 が入っていなければいけないはずですが、前から JDE 1.4 がインストールされている場合、それがそのまま使われてしまう場合があります。 Windows をお使いでしたら、コントロールパネルから「システム>詳細>環境変数」を選んで、ちゃんと JRE 5.0 が使われるようになっているか確かめてください。
なお、 JRE のバージョンを上げたら、ついでに sbReturn も StringBuffer クラスではなく StringBuilder に変えてしまいましょう。スレッドセーフではない代わりに(一時使用のバッファとして使う場合、メソッドの外から参照されることがないので、スレッドセーフである必要はありません)、ちょっとだけ速くなるはずです。
投稿:KILROY[KILROY]/2007年 04月 02日 10時 27分
/更新:2007年 04月 02日 15時 59分
ちなみにこれが「私ならこう書く」バージョン。
もっともこれを印刷しちゃったら、長すぎて読者が怒るだろうが。(^_^!)
もっともこれを印刷しちゃったら、長すぎて読者が怒るだろうが。(^_^!)
/**
* Windows-31J から iso-2022-jp への変換
* 丸数字やローマ数字(いわゆる時計数字)など、
* 機種依存文字の変換も行なっている。
* @param str
* @return
*/
public static String beforeEmail(String str) { //
StringBuilder buf = new StringBuilder("");
for (int pos = 0; pos < str.length(); pos += 1) {
char ch = str.charAt(pos);
switch (ch) {
case 0x2015: // '―':全角ダッシュ(コードポイントが並んで二つあるというのも妙な話だが)
buf.append(java.lang.Character.toChars(0x2014));
break;
case 0x2116:
buf.append("No.");
break; //
case 0x2121:
buf.append("TEL");
break; //
case 0x2160:
buf.append("I");
break; //T
case 0x2161:
buf.append("II");
break; //U
case 0x2162:
buf.append("III");
break; //V
case 0x2163:
buf.append("IV");
break; //W
case 0x2164:
buf.append("V");
break; //X
case 0x2165: //Y
buf.append("VI");
break;
case 0x2166://Z
buf.append("VII");
break;
case 0x2167: //[
buf.append("VIII");
break;
case 0x2168: //\
buf.append("IX");
break;
case 0x2169: //]
buf.append("X");
break;
case 0x2170: //@
buf.append("i");
break;
case 0x2171: //A
buf.append("ii");
break;
case 0x2172: //B
buf.append("iii");
break;
case 0x2173: //C
buf.append("iv");
break;
case 0x2174: //D
buf.append("v");
break;
case 0x2175: //E
buf.append("vi");
break;
case 0x2176: //F
buf.append("vii");
break;
case 0x2177: //G
buf.append("viii");
break;
case 0x2178: //H
buf.append("ix");
break;
case 0x2179: //I
buf.append("x");
break;
case 0x2211: //
buf.append("Σ");
break;
case 0x221f: //
buf.append("L");
break;
case 0x2225: // '‖':双柱
buf.append(java.lang.Character.toChars(0x2016));
break;
case 0x2460: //@
buf.append("(1)");
break;
case 0x2461: //A
buf.append("(2)");
break;
case 0x2462: //B
buf.append("(3)");
break;
case 0x2463: //C
buf.append("(4)");
break;
case 0x2464: //D
buf.append("(5)");
break;
case 0x2465: //E
buf.append("(6)");
break;
case 0x2466: //F
buf.append("(7)");
break;
case 0x2467: //G
buf.append("(8)");
break;
case 0x2468: //H
buf.append("(9)");
break;
case 0x2469: //I
buf.append("(10)");
break;
case 0x246a: //J
buf.append("(11)");
break;
case 0x246b: //K
buf.append("(12)");
break;
case 0x246c://L
buf.append("(13)");
break;
case 0x246d://M
buf.append("(14)");
break;
case 0x246e://N
buf.append("(15)");
break;
case 0x246f://O
buf.append("(16)");
break;
case 0x2470://P
buf.append("(17)");
break;
case 0x2471://Q
buf.append("(18)");
break;
case 0x2472://R
buf.append("(19)");
break;
case 0x2473://S
buf.append("(20)");
break;
case 0x2d79: //
buf.append("Δ");
break;
case 0x301d: //
buf.append("“");
break;
case 0x301f: //
buf.append("”");
break;
case 0x3231: // '':株式会社
buf.append("(株)");
break;
case 0x3232: //
buf.append("(有)");
break;
case 0x3239: //
buf.append("(代)");
break;
case 0x32a4: //
buf.append("(上)");
break;
case 0x32a5: //
buf.append("(中)");
break;
case 0x32a6: //
buf.append("(下)");
break;
case 0x32a7: //
buf.append("(左)");
break;
case 0x32a8: //
buf.append("(右)");
break;
case 0x3303: //e
buf.append("アール");
break;
case 0x330d: //i
buf.append("カロリー");
break;
case 0x3314: //`
buf.append("キロ");
break;
case 0x3318: //c
buf.append("グラム");
break;
case 0x3322: //a
buf.append("センチ");
break;
case 0x3323: //k
buf.append("セント");
break;
case 0x3326: //j
buf.append("ドル");
break;
case 0x3327: //d
buf.append("トン");
break;
case 0x332b: //l
buf.append("パーセント");
break;
case 0x3336: //f
buf.append("ヘクタール");
break;
case 0x333b: //n
buf.append("ページ");
break;
case 0x3349: //_
buf.append("ミリ");
break;
case 0x334d: //b
buf.append("メートル");
break;
case 0x3351: //g
buf.append("リットル");
break;
case 0x3357: //h
buf.append("ワット");
break;
case 0x334a: //m
buf.append("ミリバール");
break;
case 0x337b: //~
buf.append("平成");
break;
case 0x337c: //
buf.append("昭和");
break;
case 0x337d: //
buf.append("大正");
break;
case 0x337e: //
buf.append("明治");
break;
case 0x338e: //r
buf.append("mg");
break;
case 0x338f: //s
buf.append("kg");
break;
case 0x339c: //o
buf.append("mm");
break;
case 0x339d: //p
buf.append("cm");
break;
case 0x339e: //q
buf.append("km");
break;
case 0x33a1: //u
buf.append("m2");
break;
case 0x33c4: //t
buf.append("cc");
break;
case 0x33cd: //
buf.append("K.K.");
break;
case 0xff0d: // '−':全角マイナス
buf.append(java.lang.Character.toChars(0x2212));
break;
case 0xff5e: // '〜':全角チルダ
buf.append(java.lang.Character.toChars(0x301c));
break;
case 0xffe0: // '¢':全角通貨記号セント
buf.append(java.lang.Character.toChars(0x00a2));
break;
case 0xffe1: // '£':全角ポンドサイン
buf.append(java.lang.Character.toChars(0x00a3));
break;
case 0xffe2: // '¬':全角否定
buf.append(java.lang.Character.toChars(0x00ac));
break;
default:
buf.append(ch);
}
}
return buf.toString();
}
* Windows-31J から iso-2022-jp への変換
* 丸数字やローマ数字(いわゆる時計数字)など、
* 機種依存文字の変換も行なっている。
* @param str
* @return
*/
public static String beforeEmail(String str) { //
StringBuilder buf = new StringBuilder("");
for (int pos = 0; pos < str.length(); pos += 1) {
char ch = str.charAt(pos);
switch (ch) {
case 0x2015: // '―':全角ダッシュ(コードポイントが並んで二つあるというのも妙な話だが)
buf.append(java.lang.Character.toChars(0x2014));
break;
case 0x2116:
buf.append("No.");
break; //
case 0x2121:
buf.append("TEL");
break; //
case 0x2160:
buf.append("I");
break; //T
case 0x2161:
buf.append("II");
break; //U
case 0x2162:
buf.append("III");
break; //V
case 0x2163:
buf.append("IV");
break; //W
case 0x2164:
buf.append("V");
break; //X
case 0x2165: //Y
buf.append("VI");
break;
case 0x2166://Z
buf.append("VII");
break;
case 0x2167: //[
buf.append("VIII");
break;
case 0x2168: //\
buf.append("IX");
break;
case 0x2169: //]
buf.append("X");
break;
case 0x2170: //@
buf.append("i");
break;
case 0x2171: //A
buf.append("ii");
break;
case 0x2172: //B
buf.append("iii");
break;
case 0x2173: //C
buf.append("iv");
break;
case 0x2174: //D
buf.append("v");
break;
case 0x2175: //E
buf.append("vi");
break;
case 0x2176: //F
buf.append("vii");
break;
case 0x2177: //G
buf.append("viii");
break;
case 0x2178: //H
buf.append("ix");
break;
case 0x2179: //I
buf.append("x");
break;
case 0x2211: //
buf.append("Σ");
break;
case 0x221f: //
buf.append("L");
break;
case 0x2225: // '‖':双柱
buf.append(java.lang.Character.toChars(0x2016));
break;
case 0x2460: //@
buf.append("(1)");
break;
case 0x2461: //A
buf.append("(2)");
break;
case 0x2462: //B
buf.append("(3)");
break;
case 0x2463: //C
buf.append("(4)");
break;
case 0x2464: //D
buf.append("(5)");
break;
case 0x2465: //E
buf.append("(6)");
break;
case 0x2466: //F
buf.append("(7)");
break;
case 0x2467: //G
buf.append("(8)");
break;
case 0x2468: //H
buf.append("(9)");
break;
case 0x2469: //I
buf.append("(10)");
break;
case 0x246a: //J
buf.append("(11)");
break;
case 0x246b: //K
buf.append("(12)");
break;
case 0x246c://L
buf.append("(13)");
break;
case 0x246d://M
buf.append("(14)");
break;
case 0x246e://N
buf.append("(15)");
break;
case 0x246f://O
buf.append("(16)");
break;
case 0x2470://P
buf.append("(17)");
break;
case 0x2471://Q
buf.append("(18)");
break;
case 0x2472://R
buf.append("(19)");
break;
case 0x2473://S
buf.append("(20)");
break;
case 0x2d79: //
buf.append("Δ");
break;
case 0x301d: //
buf.append("“");
break;
case 0x301f: //
buf.append("”");
break;
case 0x3231: // '':株式会社
buf.append("(株)");
break;
case 0x3232: //
buf.append("(有)");
break;
case 0x3239: //
buf.append("(代)");
break;
case 0x32a4: //
buf.append("(上)");
break;
case 0x32a5: //
buf.append("(中)");
break;
case 0x32a6: //
buf.append("(下)");
break;
case 0x32a7: //
buf.append("(左)");
break;
case 0x32a8: //
buf.append("(右)");
break;
case 0x3303: //e
buf.append("アール");
break;
case 0x330d: //i
buf.append("カロリー");
break;
case 0x3314: //`
buf.append("キロ");
break;
case 0x3318: //c
buf.append("グラム");
break;
case 0x3322: //a
buf.append("センチ");
break;
case 0x3323: //k
buf.append("セント");
break;
case 0x3326: //j
buf.append("ドル");
break;
case 0x3327: //d
buf.append("トン");
break;
case 0x332b: //l
buf.append("パーセント");
break;
case 0x3336: //f
buf.append("ヘクタール");
break;
case 0x333b: //n
buf.append("ページ");
break;
case 0x3349: //_
buf.append("ミリ");
break;
case 0x334d: //b
buf.append("メートル");
break;
case 0x3351: //g
buf.append("リットル");
break;
case 0x3357: //h
buf.append("ワット");
break;
case 0x334a: //m
buf.append("ミリバール");
break;
case 0x337b: //~
buf.append("平成");
break;
case 0x337c: //
buf.append("昭和");
break;
case 0x337d: //
buf.append("大正");
break;
case 0x337e: //
buf.append("明治");
break;
case 0x338e: //r
buf.append("mg");
break;
case 0x338f: //s
buf.append("kg");
break;
case 0x339c: //o
buf.append("mm");
break;
case 0x339d: //p
buf.append("cm");
break;
case 0x339e: //q
buf.append("km");
break;
case 0x33a1: //u
buf.append("m2");
break;
case 0x33c4: //t
buf.append("cc");
break;
case 0x33cd: //
buf.append("K.K.");
break;
case 0xff0d: // '−':全角マイナス
buf.append(java.lang.Character.toChars(0x2212));
break;
case 0xff5e: // '〜':全角チルダ
buf.append(java.lang.Character.toChars(0x301c));
break;
case 0xffe0: // '¢':全角通貨記号セント
buf.append(java.lang.Character.toChars(0x00a2));
break;
case 0xffe1: // '£':全角ポンドサイン
buf.append(java.lang.Character.toChars(0x00a3));
break;
case 0xffe2: // '¬':全角否定
buf.append(java.lang.Character.toChars(0x00ac));
break;
default:
buf.append(ch);
}
}
return buf.toString();
}
投稿:KILROY[KILROY]/2007年 04月 02日 20時 11分
/更新:2007年 04月 02日 20時 11分
回答ありがとうございます。とても助かりました。m(_ _)m
投稿:rapuntuleru[rapuntuleru]/2007年 04月 02日 20時 48分
/更新:2007年 04月 02日 20時 48分
> とても助かりました。m(_ _)m
こういうときは「とても助かった」件について自分の「恥ずかしい体験」(大抵つまらないところで引っかかるのだ)について詳細に語ると、
漏れも他人事のように書いているが、大方は散々恥ずかしい体験をした結果得たものである。実際その気になれば何時間でも語っちゃえるのだが、素面(しらふ)で語るのは憚られるので、できれば酒でも呑みながら開帳に及びたいところではある。
竹形さん>そのうち一杯やりましょう。自然言語処理ネタで盛り上がれれば幸いです。
こういうときは「とても助かった」件について自分の「恥ずかしい体験」(大抵つまらないところで引っかかるのだ)について詳細に語ると、
ありがちな、陥りやすい失敗について後進が学ぶことができる。
自己開示によって好感度が挙がる。
結果、このサイトに常連がついてサイトが賑わう。
とかいった各種メリットがあるので、ぜひ語っていただきたい。漏れも他人事のように書いているが、大方は散々恥ずかしい体験をした結果得たものである。実際その気になれば何時間でも語っちゃえるのだが、素面(しらふ)で語るのは憚られるので、できれば酒でも呑みながら開帳に及びたいところではある。
竹形さん>そのうち一杯やりましょう。自然言語処理ネタで盛り上がれれば幸いです。
投稿:KILROY[KILROY]/2007年 04月 02日 23時 01分
/更新:2007年 04月 02日 23時 02分
どうも、いろいろありがとうございます & 放置したままで済みません。
竹形さん>そのうち一杯やりましょう。自然言語処理ネタで盛り上がれれば幸いです。
是非に!
KILROYさんのお住まいはどちらですか?
私は先月から沖縄住まいですが、4/8まで千葉の実家にいます。
よろしかったらtakegata@veltec.co.jpまでメールでご連絡ください。
竹形さん>そのうち一杯やりましょう。自然言語処理ネタで盛り上がれれば幸いです。
是非に!
KILROYさんのお住まいはどちらですか?
私は先月から沖縄住まいですが、4/8まで千葉の実家にいます。
よろしかったらtakegata@veltec.co.jpまでメールでご連絡ください。
投稿:竹形 誠司[takegata]/2007年 04月 03日 11時 03分
/更新:2007年 04月 03日 11時 03分