1 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:48:24 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド111【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1200151522/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝のう存じます。 次スレは>>980 あたりで。
930 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 08:53:43 ] >>928 というか、>>927 のコードを(System.out.printfをprintfに置き換えたものを) C言語でやっても、エンディアンなんかわからないけどね。
931 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 10:44:36 ] はいはい! 先生方に質問よろしいでしょうか! Javaアプレットを使ってブラウザ画面の自動撮影を行いたいんですが、どういう組み方をすれば良いんでしょうか! 訪問者が来る度にスクリーンをキャプチャしてサーバーに保存、 自分の環境では確認できない動的なサイトの動作チェックに使いたいと思います!
932 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 11:13:12 ] >>931 セキュリティ上の問題があるので無理。
933 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 11:52:57 ] 質問です。 www.techscore.com/tech/J2SE/Thread/5-2.html 上記のソースにて、queue.size() == 1の時は、put()からのqueue.addFirst(obj)呼び出しと、 get()からのqueue.removeLast()呼び出しが同時に呼び出される可能性があり、 LinkedListはスレッドセーフではないから問題あり、と思うのですが認識あってますか? notifyAll()の使い方の解説なので、ソースにケチをつけてる訳ではないです。
934 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 12:10:26 ] >>933 synchronized付いてるから同時には呼び出されない
935 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:29:18 ] >>932 ええ、そんな! 何とかなりませんか! 先生!
936 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:39:42 ] 例えば! Robotを使いスクリーン画像を取得! そのデータをURLConnectionでCGIに送り、 CGIでログを保存するみたいな形でできそうな気がするんです! 問題はRobotの自動実行が可能かどうかで! もし不可能なら利用者にボタンを押させる方法でも構いません! やりたいのは動的なサイトの確認であって、不正行為ではないんです! だから利用者の確認をしっかり取らなければならないというのであれば従います! 先生お願いします! 僕に僅かでも良いので知恵をお貸し下さい!
937 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:50:40 ] 例えば! Robotなんてアプレットで許したらマウスも自動で動かせる! そしてマウスで勝手に送信ボタンを押させ、 CGIで不正取得なんかもできそうな気がするんです! 問題はその動作が利用者がやったのかRobotがやったのかで! もし不可能なら不正取得かサイトの確認か判断が付きません! やりたいのが動的なサイトの確認であって、不正行為ではないと証明できないんです! だからアプレットではそんなことは許されていなくて、それにみんな従います! 先生お願いします! 僅かでもいいので理解してください!
938 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:57:58 ] javaで画面のキャプチャなんて取れるの?
939 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:01:16 ] 質問者も言ってるように、Robot使えば可能 あと、ぐぐったら q.hatena.ne.jp/1138377277 こんなんがでてきたよ。 これで目的は達成できるかな?
940 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:03:14 ] いつぞやの謎スクリプトを髣髴とさせるな。 // CGI を設置できるのだから、問題のSSを送ってもらえば終了。 >>938 java.awt.Robot.createScreenCapture(Rectangle) で出来ますよ。
941 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:12:46 ] >>939 ありがとうございます先生! ttp://browsershots.org/ このツールでほとんどの環境が確認できました! さすが先生です! また何かあったときよろしくお願いいたします!
942 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:25:28 ] >>937 ええ! ということは先生! アプレットではRobotの使用ができないということなんでしょうか!
943 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:55:31 ] >>942 署名付ければ出来なくは無い でもそんなアプレット誰も実行してくれないだろう スクリーンショット自動送信なんて、機密情報もれまくり お前が今見てるその秘密の画像も勝手に送信されてるよ
944 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:50:25 ] >>943 そうなんですか! 何から何までありがとうございます!
945 名前:デフォルトの名無しさん [2008/02/29(金) 20:28:21 ] 技術的に出来ないのと倫理的に出来ないのは分けて書こうぜ 紛らわしい
946 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:12:49 ] >>941 で目的達成できてるなら、質問者には技術的にできるかできないかなんてどーでも良くなってるんじゃ?
947 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:39:40 ] Script API で実行するスクリプトだけセキュリティ制限かけられない? 今のままだとファイル消したりネットワークアクセスしたりやりたい放題なんだけど。
948 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:05:29 ] 標準APIじゃ無理。
949 名前:デフォルトの名無しさん [2008/03/01(土) 03:28:21 ] コメントをUTF-8で書いてるんだけど、Javadocにすると文字化けする。 何とかできないでしょうか?
950 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 03:33:02 ] >>949 javadoc コマンドの -encoding か -charset これぐらいはマニュアル見て発見しよーぜ。
951 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 03:33:04 ] >>949 javadoc -encoding UTF-8
952 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 03:37:38 ] >>949 javadocだけじゃなくてコンパイルするときにも警告が出ない? システムのデフォルトの文字エンコード以外を使うときはencodingオプションを
953 名前:デフォルトの名無しさん [2008/03/01(土) 07:52:08 ] 本当に基本的な質問で申し訳ありません。 フォントを変更したときに setFontでPLAINに変更してもデフォルトのボールドのかかった フォントが印刷に反映されません。 どこかで読んだと思い過去スレで探したのですが見つかりません。 教えていただければ幸いです。
954 名前:デフォルトの名無しさん [2008/03/01(土) 09:02:08 ] public class sample69 { public static void main(String[] args) { p_calc.Calc calc =new p_calc.Calc(); System.out.println(calc.sum(1,2)); } } コンパイルすると、
955 名前:デフォルトの名無しさん [2008/03/01(土) 09:02:59 ] c:\source>javac sample69.java .\p_calc.java:3: ')' がありません。 int sum(int i; int j){ ^ .\p_calc.java:3: ';' がありません。 int sum(int i; int j){ ^ .\p_calc.java:8: クラス sample68 は public であり、ファイル sample68.java で宣 しなければなりません。 public class sample68 { ^ sample69.java:3: p_calc にアクセスできません。 クラスファイル .\p_calc.java は不正です。 ファイルにクラス p_calc が含まれていません。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 p_calc.Calc calc =new p_calc.Calc(); ^ エラー 4 個 これが出ます。原因はなんでしょうか?
956 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 09:18:13 ] >>955 1. 2 と同じ原因。i の後のセミコロン。 3. ファイル名と public なクラス名が違う。 4. p_calc クラスがコンパイル出来ず、実行ファイルが見つからない。
957 名前:デフォルトの名無しさん [2008/03/01(土) 09:46:26 ] sample69をコンパイルしようとしているのに、sample68のことが出るって変じゃあないですか?
958 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:34:17 ] >>957 とくに変じゃないよ。 sample69 で使われている p_calc.Calc を見つけるために p_calc.java もコンパイルしているんでしょう。
959 名前:デフォルトの名無しさん [2008/03/01(土) 10:51:05 ] 今日の日付を Date date = new Date(); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd"); String today = sdf1.format(date); で取得して、日付2008/3/10と比較させ今の日時より前か後かという判定を 行いたいのですが、具体的にどうすればよいのでしょう?
960 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:57:08 ] >>959 Calendar#afterとCalendar#beforeを読むべし 実際はGregorianCalendarになるけどな
961 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:59:05 ] >>960 ちょっと調べてみます
962 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:21:03 ] 音声認識に興味があるんだけど、Java Speech APIで実用に耐えられそうですか? それともC++あたりに鞍替えした方がいいですか?
963 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:23:35 ] _
964 名前:959 mailto:sage [2008/03/01(土) 11:27:16 ] 調べて書いてみたのですが、今日の時刻はこんな感じでよいのでしょうか? SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd"); Date now = new Date(); //現在時刻を取得 String today = dateformat.format(now); //変数todayに今日の時刻をyyyy/MM/dd型でいれる
965 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:08:15 ] 面倒くさいから、y*10000+m*100+d同士で比較しちゃう。
966 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:17:14 ] Strutsアプリケーションを作成しているのですが セッションIDをSHA-1でハッシュ化するにはどうしたらよいでしょうか?
967 名前:959 mailto:sage [2008/03/01(土) 12:20:16 ] ここまでできました //今日の日付を取得 Date now = new Date(); //今日の日付 SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd"); //型の指定 //日付の比較 if (now.before(dateformat.parse("2005/1/1"))) { //今日が2005/1/1より前のときの処理 }else{ //今日が2005/1/1より後のときの処理 } ただ、これだと1番最後の行でエラーがでてしまいます・・ エラーは 「処理されない例外の型 ParseException」です
968 名前:959 [2008/03/01(土) 12:21:38 ] エラーは一番最後じゃなくて if (now.before(dateformat.parse("2005/1/1"))) { のところでした
969 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 12:41:34 ] >>966 Javaでダイジェストを生成する ttp://www.atmarkit.co.jp/fjava/javatips/117java021.html >>967 > 数値: フォーマットには、パターン文字の数は最小桁数になります。 二文字使ってるから最低二桁なのでは?
970 名前:959 [2008/03/01(土) 12:52:53 ] いろいろ調べてるんですがよくわからないことばかりです 日付の比較のところがよくないとは思うのですが;; // 今日の日付を取得 Date now = new Date(); //今日の日付 SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd"); //型の指定 String today = dateformat.format(now); //変数todayに今の時刻がはいる 解約予定日を取得 SimpleDateFormat kaiyaku = new SimpleDateFormat("yyyy/MM/dd"); String kaiyakuyoteibi = kaiyaku.format(2005/10/15); // 日付の比較 if ( ) { //System.out.println("今日は2002/06/10よりも前の日です。"); }else{ }
971 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:09:40 ] 時刻も含めて比較したいなら、Date#compareToでできる。 日付で切り捨てたいなら、Calendarに変換してsetで時刻を0にする。 ユーティリティメソッド作ってそこで比較すべし。 あちこちで比較してたら、バグの温床。 ついでに言えば、「今日の日付を取得する」もユーティリティメソッドにして、 システムプロパティなどで、「今日の日付」を設定できるようにしておくと、 わざわざシステム日付を変更しなくとも、日付が変わったときのテストができる。
972 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:12:13 ] >>947 権限の低いクラスローダでロードしたクラスを挟んでスクリプトを呼ぶといいんじゃないかな、と推測だけで言ってみる
973 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:39:35 ] スレ違いかも知れませんが… Commons/Net 1.4.0 のFTPClientを使っていて 昨日から原因不明のエラーが多発してました ようやく判明した原因は、FTPClient#listFiles()が返すFTPFile[]の要素が なんと2/29のタイムスタンプのファイルについてはnullになってしまう事でした! とりあえずサーバの関連ファイルをtouchして急場をしのぎましたが この件について善後策を相談するのに最適のスレなどがあれば教えて下さい
974 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:51:14 ] >>973 ドキュメントにバグの報告先とかメンテナの連絡先が書いてあるはずだから、 最小の再現コード付けてレポートする。
975 名前:デフォルトの名無しさん [2008/03/01(土) 14:50:50 ] 勉強のためにファイル転送のプログラムを作っているのですが、 いまいち上手くいきません。流れとしては、 @(送り手) FileChannel(sourceChannel)でファイルを読み込む A(送り手) SocketChannel(destinationChannel)で相手に送る B(受け手) SocketChannel(sourceChannel)で受け取る C(受け手) FileChannel(destinationChannel)でファイルに書き込む 送り手 while(destinationChannel.isConnected()){ buffer.clear(); if(sourceChannel.read(buffer) < 0) break; buffer.flip(); destinationChannel.write(buffer); } 受け手 while(sourceChannel.isConnected()){ buffer.clear(); if(sourceChannel.read(buffer) < 0) break; buffer.flip(); destinationChannel.write(buffer); } bufferはByteBuffer型になっています。 これを実行すると、送り手はエラーもなく正常に終了しているのですが、受け手で 「java.io.IOException: 既存の接続はリモート ホストに強制的に切断されました。」というエラーが出てきます。 エラーが出た場所 => if(sourceChannel.read(buffer) < 0){ 長文な上にわかりにくい文章かもしれませんが、 なぜこうなるのか教えてもらえないでしょうか?
976 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 15:02:45 ] >>975 データの受信自体は問題ないのですか? 単にデータを送るだけだと、送り手側でソケットを閉じると、 受け手側でエラーが出るはずですが… 何らかのプロトコルで「送受信完了」をやり取りする形にすれば 問題のある状態なのかどうか判断できると思います
977 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 15:11:10 ] 勉強のためならまずCでやったほうがいいよ Javaでやっても意味ないよ
978 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 15:27:11 ] 質問させてください String str = "12345"; str += "abcde"; これで連結しようとするとrangeが足りないと出ます すでにあるStringクラスのオブジェクトに文字列を連結するための メジャーな方法などがあれば教えてください
979 名前:デフォルトの名無しさん [2008/03/01(土) 15:56:12 ] >>976 データの受信自体が出来ないみたいです。 送り手側は一通りプログラムが実行されて終了するのですが、 受け手側は if(sourceChannel.read(buffer) < 0) の部分で処理が止まっているみたいです。 受け手は、送り手が書き込むのを待っている状態になっているんでしょうか? >>977 時間に余裕が出来ればCも勉強しようと思っています。 今は就職活動中であまり時間が無くて、息抜きでやっている状態なので... 助言ありがとうございます。
980 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:00:40 ] >>978 不可能
981 名前:978 mailto:sage [2008/03/01(土) 16:02:28 ] 自己解決しました スレ汚しごめんなさい
982 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:44:15 ] ServletContextを得るためのgetServletContext()というメソッドがありますが、 APIを見てみるとServletContextはインタフェースなのでオブジェクト化は出来ませんよね。 getServletContext()は、実際にはServletContextではなく、ServletContextを実装するサブクラスを作ってるんでしょうか?
983 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 17:46:00 ] ServletContext context = getServletContext(); System.out.println(context.getClass().getName());
984 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:13:50 ] 次スレたててみる
985 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:18:51 ] 次スレ 【初心者】Java質問・相談スレッド113【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1204363011/
986 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:00:59 ] >>985 乙彼Death
987 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 21:31:24 ] >>975 送り側はちゃんと閉じてる?
988 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 02:22:23 ] PHPを学習した後だとJavaの習得は容易ですか?
989 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 02:31:14 ] いいえ
990 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 02:38:08 ] PHPの知識は役立たないの?
991 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 02:47:56 ] javaの勉強はじめました。 ネットワークとかGUIとか使って何か作りたいのですが、 何も思いつかないので、 パケットモニタ(?)(今どんなメッセージで通信されているか)みたいなのを作りたいのですが、 ネットワークに関しては、どの変の勉強すれば早そうでしょうか。 この辺のクラスは古いから使わないほうがいいとか、 この辺使えばすぐじゃないかとか教えていただけると助かるのですが、 助言もらえませんか。 GUIに関しては、本とWebを参考にして手をつけていたら何とかなりそうな気がしているのですが、 ネットワークは難しすぎて…。
992 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:16:15 ] Java→PHPなら簡単
993 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:18:43 ] >>991 何をしたいのか本人すら分かってないのに他の人に聞いても分かるはずないよ ネットワークって具体的に何?サーブレットでWebアプリ作るとかじゃ駄目なの?
994 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:22:47 ] パケットモニタはドライバ組まないと無理だ。 通信なら Socket 使えばいい。
995 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:36:45 ] >>934 >synchronized付いてるから同時には呼び出されない え?メソッドレベルの排他というのは、一つのメソッドに複数のスレッドが同時に入れないだけで、 アクセスするメソッドが別なら排他されないのでは?やば、今までずっと間違えてきたかも。。。
996 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:38:58 ] なんかいろいろ勘違いしてるなw
997 名前:933, 995 mailto:sage [2008/03/02(日) 03:44:36 ] >>934 いやいや、やっぱり同時アクセス可能ですよ。でないとnotifyAll()でwait()を解除してあげられないです。
998 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:47:47 ] インスタンスメソッドの synchronized 修飾子は synchronized(this){ } でメソッド内全てを囲ったのと等しい。 クラスメソッドの synchronized 修飾子は synchronized(Queue.class){ } と等しい。
999 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:51:58 ] www.amazon.co.jp/dp/4797337206
1000 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 03:55:06 ] 1000 なら Java 死滅確定
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。