【初心者】Java質問・相談スレッド119【歓迎】
3 :
デフォルトの名無しさん :2008/09/03(水) 06:27:30
乙
前スレのきちがいへ castはジェネリックで使うから意味があるわけで ジェネリックが使えなければ意味がない。 動的と言ってる部分はあくまでジェネリック部分なのだから。 だからジェネリックのないところで同じようなことはできない。 だからみんな出来ないと答えてる。 まあキャストした後でどう使うのかをコードで示せれば、 それに応じた解決策はでるかも知れない。 といっても使い方が、言語自体拡張したりテンプレート的なもので使うとかでないと java言語の範疇では無理だと思うけどね。
5 :
デフォルトの名無しさん :2008/09/03(水) 09:09:38
Javaは動的に見えて、あくまで静的な言語ですな。結局void *でしかないですけど・・・
前スレの988ですが質問の仕方が悪かったようなので再度お願いします 型の変換について質問なのですが String型をint型として扱いたい場合Integer.parseInt(String)を使いますよね? しかしこのStringは数字の文字列でなくてはいけないようで 数字以外の文字列が含まれている場合エラーが出ます(最初lengthでも返ってくるかな?と思ったのですが) double型をint型として扱いたい場合Integer.parseInt()ではなく(int)doubleでキャストをしますよね? 同じ型変換のようですが両者には違いがあるようで Stringの場合はintにキャストできないしdoubleの場合はInteger.parseInt()を使うことはできません 私はパースするという行為とキャストするという行為が型変換をするための行為だと思ってるのですが これは間違った認識でしょうか? もし両者とも型変換を行うものであるならば内部的にどのような違いがおきているのでしょうか? 自分で何か変な勘違いをしてるのかと思っているのですがよろしくお願いします
>>6 > 私はパースするという行為とキャストするという行為が型変換をするための行為だと思ってるのですが
> これは間違った認識でしょうか?
キャストは型変換だけど、パース(parseInt)なんかは、
型変換だとは考えないほうがいいと思うので、
間違った認識でしょうね。
8 :
6 :2008/09/03(水) 11:24:10
>>7 どうもレスありがとうございます
キャストは型変換ときいてひとまず安心しました
パースは文字通りに考えると構文解析なのでしょうが
それが何を意味してるのかが正直わかりません
その辺も含めてもっといろいろ調べてきたいと思います
型がない言語から勉強をはじめるとそういう解釈にもなるんでしょう。
>>8 内部的(なイメージ)からだとキャストを型変換というのも微妙な気がするが。
変換というと元のものが別のものに変わるような気がしてする。
ある果物(メモリ上のオブジェクトイメージ)に「リンゴ」というラベル(変数a)が
付いていて、それにもう一つ「ふじ」というラベル(変数b)を付けるのがキャスト。
どっちも同じものを示しているし、オブジェクトイメージは変化しない。
この手法(?)は(変数が実質ラベルである)オブジェクトにしか出来ないので、
プリミティブが関係する場合はキャストのように見えるのは全てパースで、
つまり元から別のものを作り出している。
…ヘタだな、すまん。
1. 型変換のキャスト
double d = 3.14;
int i = (int)d;
2.
>>10 が書いているような型の解釈を替えるためのキャスト
リンゴ ap = ...;
ふじ fj = (ふじ)ap;
たぶんこの2種類があって、1の方は組み込み型でしか使えない。ので、
組み込み型ではないクラスで型変換のようなことがしたかったら
parseInt()のようなキャストではない実装が必要になるんでしょう。
そういう面倒臭いのはPerlとかでやっとけ
>>9 暗黙の型変換やってるだけで全部バリアントっていう言語は実際少ないでしょ。
>>4 ジェネリック無くても、オーバーライド関係でキャストは必要じゃね?
castってのはClass#castの話だろう
16 :
デフォルトの名無しさん :2008/09/03(水) 23:31:05
JSplitPaneやJScrollPaneを生成してから、 そのサイズを使って処理を行いたいんですけど、 生成時はサイズが 0 のままで、 repaint() が呼び出されないとサイズに有効な値が入りません。 pack() とか revalidate() とか適当に呼び出してるんですけど、 足りないんでしょうか? (そもそも pack とか validate の使い方がよくわかってませんが。。)
そういうもんだから仕方ない
setVisible(true)しないと計算されないんだっけか? そのサイズを使った処理ってのは何?
>>16 サイズで私の場合は、中に入れ込むコンポーネントの
setPreferredSize を使うと大体解決します。
とりあえず、api ドキュメントを読みましょう。
Swing の場合は "How to Use XXX" も読みましょう。
JToolBarってデフォルトのままgetBackgroundを使うとrgb238,238,238が入ってる みたいなのですが、ツールバーに加えるコンポネントの背景色に setBackground(jtoolbar.getBackground())とか setBackground(new Color(238,238,238))とかやってもツールバーに対して白っぽくなります。 で、toolbarの方にsetBackground(new Color(238,238,238))ってやると色が揃ったので、 どうやらJToolBarのデフォルトの色がおかしいみたいだったのですが getBackgroundで返ってくるのじゃないこのデフォルトの色は何なんでしょうか?
>>21 どの JToolBar か分かんないが、1.6.0_07 のデフォルトのなんとかいうテーマのは、
グラデーションが掛かっているように見える。
JToolBar のレンダラ(?)が書いてるんだと思うが、Color はグラデなんか表現できないから、
一番明るい色かなにかを返してるとかじゃないか。
もし「ならば上に載せるコンポーネントの背景色をどうすればいいのか」という話なら、
透明にすればいいんだ。
>>22 ありがとうございます!
よく見ると確かにグラデーションなんですねこれ。
背景色透過ってどうするんだろうと調べたらそのものsetContentAreaFilledがあるんですね。
これfalseにすると透過になる代わりにマウスに対するフォーカスもなくなるみたいなので
マウスのリスナで切り替えるようにしたら上手く出来ました、情報感謝です!
24 :
デフォルトの名無しさん :2008/09/04(木) 09:42:47
調べてみましたが、確信が持てなかったので教えて下さい。 J2MEでTomcatって動作できませんよね?
25 :
デフォルトの名無しさん :2008/09/04(木) 10:03:20
自己解決しました。動作出来ないっぽいです。
>>23 JComponent#setOpaque
オパキュー
28 :
デフォルトの名無しさん :2008/09/04(木) 14:51:07
Thread thread = new Thread (){ public void run(){ while (true) { sleep(100); } } }; thread.start(); thread = null; こういうふうに、どこからも参照されなくなったスレッドは、 いつかGCに消されて処理が止まるんでしょうか? それともずっと動き続けるんでしょうか?
動き続ける
>>28 ずっと動き続けます。
どこからも参照されない状態にはなっていません。
Thread.start() に、以下の行があります。
> group.add(this);
何でスレッドを安全に停止するスレッドってなくなっちゃったんですか?
Thread.stop() が deprecated な事を言ってるんじゃ。 とりあえずAPIリファレンスみれば
安全に停止する方法がなくなったんじゃなくて、 元々安全じゃないから使うなになったんだろ
代替コードがjavadocに書いてあるだろ。
ロックオブジェクトはstaticで作るべきですか?
38 :
36 :2008/09/04(木) 21:34:17
すいません。 質問を変えます。 どういう場合にstaticで作るべきでしょうか?
意味が分からん。 ロックしたい粒度、スコープをあらわすのにstaticオブジェクトがふさわしい場合
下記のようにmethodAとmethodBが同じクラス内にあったとき methodA呼び出し中にmethodBを呼び出し、再度methodAを呼ぶと デッドロックは起こりますか? class A{ private Object lock = new Object(); void methodA(String str){ synchronized(lock){ try(){ while(true){ Thread.sleep(1000); System.out.println(str); } }catch(Exception e){ e.printStackTrace(); } } } void methodB(){ lock = new Object(); } }
あ、デッドロックじゃなくて、単なる処理待ちでした 要するに、ロックオブジェクトに別のインスタンスを代入すると、 同期中の処理は同期されなくなるんでしょうか?
>>41 同期っつーか、排他制御されると思う根拠は何?
いえ、予想としては排他制御されなくなると思ってるんですが 違うのですか?
あたまわる!
何が回ってるって?
×あた回る 〇あ賜る
ファイルを読み込み、修正し、書き込みなんですが、 1つが600MBとか1Gとかのファイルなので、全部をメモリで読み込めず、 また、作業ファイルも作れないのですが、直接修正個所を当該ファイルに書き戻したいです。 read(byte[])して、write(byte[])は無理なので、どうすればいいのでしょうか。
>>34 実はそう言われると思っていたんですがその方が分かりやすいと
思ったのでああ書きました。
結局停止するメソッドはないんですね。
本家サイトに書かれている方法も分かるんですが、あれだと
ぐるぐる回ってる処理でしか停止できないので気持ち悪いですね。
一つのシーケンスを途中で切る事ができないって言うか。
シーケンスの中に止まるかどうかを判定するコードを何個も
仕掛けておかないとダメって事ですか?
てか
>>31 はメソッドとスレッドを間違えてますね。
>>48 修正内容による。
ファイル先頭で読み込んだ内容がファイル終端に書き込むべき内容に影響するとかだと面倒だし。
全てのデータの影響範囲が局所的なら、
RandomAccessFile とか FileChannel とかで read()、内容を修正、write() でOK。
場合によってはバッファリング必要になるけど。
regexなどつかって修正するので、ファイルの結果のサイズが可変なんですが、どうしましょう? マッチ個所を'\0'で埋めるわけにもいかず、とくにマッチを切り取りすると間違いなく可変です。 アルゴリズムはすぐ浮かぶんで作れるんですが、 開いたファイルを修正してそのまま上書きするようなライブラリとかないでしょうか?
53 :
デフォルトの名無しさん :2008/09/05(金) 16:18:21
ImageBufferから画素のいろをα,R,B,Gの値で取得したいんですがどうすればいいでしょうか ピクセルという単位についても教えていただけたらと思います
54 :
デフォルトの名無しさん :2008/09/05(金) 16:21:15
BufferedImageじゃないの? BufferedImage#getRGB(int x,int y) - int
getImageメソッドで1つ上のディレクトリに置いてある画像を読み込むにはどうしたら良いんですか? img = getImage(getCodeBase(),"../画像.gif"); と書いて実行しても画像が表示されません。下のディレクトリにある画像の指定は出来るんですが。
57 :
デフォルトの名無しさん :2008/09/05(金) 21:37:38
while(true){ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str=br.readLine(); System.out.println(str); br.close(); } これを動かすと一回入力しただけで終了になってしまいます。 何か分からないのですが、br.close()を削除すると何回もちゃんとループ出来ます。 なんでこれって一回で終わっちゃうのでしょうか?
>>57 なんでって馬鹿なコーディングしてるから落ちるんだろ
絶対落としたくないなら例外処理ぐらいしろボケ
例外処理はこの外でしてるんですよ。 どこが馬鹿なのかを聞きたいわけでして。
>>57 br.close(); で連鎖的にSystem.inもクローズされる。
>>59 ループの中で例外処理しなきゃ意味ねーだろボケ
>>57 BufferedReader.close()
> ストリームを閉じます。
とありますが、この意味が分からない、と。
何処から説明した方が良いのでしょうね。
>>59 BufferedReader 閉じたら
その元になってる InputStreamReader
その元になってる System.in も連鎖的に閉じちゃうからね。
閉じた System.in から read() しようとすると IOException 食らうんだっけか?
頭悪すぎ
65 :
57 :2008/09/05(金) 21:58:51
なるほど、ありがとうございます。 System.inは常に開かれてるのかと思ってました。 たしかに標準入力じゃなくて他のストリームから毎回開いて読み込むようにすると大丈夫みたいでした。 ちなみに標準入力のストリームって一回閉じちゃうと自分で開くことって出来ないんでしょうか?
無理。
>>66 そうですか、どうもありがとうございます。
いや、できる
>>63 実装上EOFExceptionだったりする事もある
何?このスレ System.inを再度開くこともできない無能回答者しかいないの? ププw
ググレカス
74 :
デフォルトの名無しさん :2008/09/05(金) 23:58:57
環境変数のJAVA_HOMEを設定していないユーザ環境において、 JDKまたはJREのインストールディレクトリのパスを取得するには 自前でパス検索するしかないのでしょうか? それともJavaのインストールパスを取得する簡単な方法はありますか?
>>74 WindowsでSunのJDK/JREをインストーラ経由で入れてるなら
レジストリ見るとかあるけど、確実でもないし簡単ともいえない
77 :
デフォルトの名無しさん :2008/09/06(土) 00:19:40
>>75 レスありがとうございます。書き忘れましたが、Windows環境での話です。
何故このような疑問を持ったかというと、
JNIでC言語からJavaを呼び出すプログラムを実行する際に、
JDK/JREのインストールディレクトリ下にあるjvm.dllを
読み込む必要があるためです。
通常であればJAVA_HOME、PATH、レジストリあたりを見るべきなんでしょうか。
複数のJDK/JREがインストールされていた場合はどうするべきでしょうか?
>>77 複数インストールされてる場合は、
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\CurrentVersion
あたりを見るとか、JDK/JRE関連レジストリ全部読み込んで一番バージョンが大きいやつ使うとか。
>>78 アプリケーションによって何を使うかは異なるわけですね。
何かサンプルになるものを探してたのですが、
意外と見つからないです。
もう少し考えてみます。
java使わないおれがあてかんで回答してやると HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\[バージョン]\RuntimeLib が正解だろ
質問というより相談で申し訳ないのですが、 JAVAでチャットのサーバーサイドを作る場合、大きく分けて2種類あると思います。 1クライアントに1スレッドを作るやり方と、java.nioを使ってクライアント全員を並列処理する方法です。 そこで質問なのですが、大人数が参加するチャット(ルーム機能も付いています)では、 やはりノンブロッキングIOを使うほうがいいのでしょうか?
82 :
デフォルトの名無しさん :2008/09/06(土) 01:27:11
ノンブロッキングもスレッド使うのも、接続増えたら結局は鯖かえなくちゃいかんのじゃないか
83 :
デフォルトの名無しさん :2008/09/06(土) 02:03:27
javaのSetについて質問です class Address{ public Address(String name, String address) { this.name = name; this.address = address; } public String toString() { return "name : " + name + " address : " + address; } //getter setterは省略 public String name; public String address; }
84 :
デフォルトの名無しさん :2008/09/06(土) 02:04:47
上の続きです public class Practice{ public static void main(String[] args) { Set<Address> test = new HashSet<Address>(); test.add(new Address("hiroshi", "tokyo1") ); test.add(new Address("hiroshi", "tokyo2") ); test.add(new Address("hiroshi", "tokyo3") ); test.add(new Address("hiroshi", "tokyo4") ); test.add(new Address("sayoko", "tokyo1") ); test.add(new Address("sayoko", "tokyo3") ); Iterator<Address> iter = test.iterator(); //hiroshiの情報だけ取り出したい while( iter.hasNext() ){ Address i = iter.next(); if( i.name.equals("hiroshi") ) { System.out.println( i ); } } System.out.println("-------------"); //tokyo1の情報だけ取り出したい iter = test.iterator(); while( iter.hasNext() ){ Address i = iter.next(); if( i.address.equals("tokyo1") ) { System.out.println( i ); } } } }
85 :
デフォルトの名無しさん :2008/09/06(土) 02:07:09
上の続きです SetでAddressクラスのnameをキーとして情報を取り出したり addressをキーとして情報を取り出したりしたいのですが, 上の実装だとset内の値の数が増えてくるとなんだか効率が悪いような気がします. 他に実装方法はありますでしょうか
class うんこ { Map name, addr; public void add(Addr addr) { name.add(addr.getName,add); addr.add(addr.getAddr,add); } public Addr getByName(Str name) { return name.get(name)s; } } これで我慢しとけハゲちゃびん
Mapじゃあかんの?
java.awtComponentのソース見てたら setEnabled(boolean)のところで Component.this.setEnabled(b); って出てきたんだけど、このthisってどゆ意味?
89 :
85 :2008/09/06(土) 03:58:02
>>87 Mapだとkeyの値が一つに限定されてしまいます
あと,valueからkeyを取得することができないです.
90 :
85 :2008/09/06(土) 04:07:38
ごめんなさい
valueからkeyはbidimap使えばできますね(標準関数じゃないけど)
>>89 の下一行は無かったことで
keyの値を色々変えてSetの中身を検索したいです
>>90 Index用のMapを作るのはどうでしょう。
Map<String(name), List<Address>>
Map<String(address), List<Address>>
AddressはSetに追加してるから可変ではないと思いますが、
可変の場合は、変更シークエンスをキチンとチェックしてくださいまし。
>>91 そのサイト読んでみたけどよく分かんないっす……
>>90 とにかく突っ込んどけば簡単に検索できるっていうクラスは無いんじゃないかな。
>>89 keyの値が一つに限定って、"hirosi"→"tokyo1","tokyo2","tokyo3"…なら
Map<String,Set<String>> とか Map<String,List<String>> で表現できるでしょ。
逆もしたかったら "tokyo1"→"hirosi","sayoko" を同じ構造の別の Map に入れとく。
つまり(クラス名はともかく)
>>86 みたいな感じってこと。
>>88 内部クラスからそれを含むクラスを参照してるってこと。
>>88 > Component.this.setEnabled(b);
が書かれているメソッドsetEnabled(boolean)はComponentクラスのメソッドではなく、
その内部クラスのメソッドじゃない? たぶんAccessibleAWTComponentクラス。
クラス名.thisという書き方はQualified thisと呼ばれていて、
ttp://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8.4 内部クラスを囲う外側のクラスのthisを明示的に指定することができる。
質問の例では、内部クラスにもComponentクラスにもsetEnabled(boolean)が定義されているので、
内部クラスでthis.setEnabled(b)とか単にsetEnabled(b)と書くと、
内部クラスのsetEnabled(boolean)が呼ばれる。
Componentクラスの方のsetEnabled(boolean)を呼ぶためにそういう書き方をする。
htmlにJavaApletを組み込んで、新しいプログラムが動くか動かを実検したいです。 完成したら、皆も使える用にしたいが、<!--(?)の続きはどう書きますか。
100 :
デフォルトの名無しさん :2008/09/06(土) 09:32:22
その聞きたいアプレットのことは、普通に本とかウェブの解説じゃないか?
>>81 その処理が滅茶苦茶リソースを食うなら java.nio で並列処理したほうがいい。
あと通信量がすんげー多いなら並列処理のほうがパフォーマンスが上がる。
このどちらでもないなら、どっち使っても大して変わらない。
いや、変わるだろ
104 :
101 :2008/09/06(土) 12:00:59
>>102 スレッドの切り替えが重い OS なら変わるな。
で、たとえばどんな場合を想定してる?
>>103 忘れてた。
スレッドのコンテキストスイッチが重いんだろうなという妄想に取り付かれていたり
ほんの少しでも早ければそれで満足なら並列処理で。
プログラムが楽になればそれでいいならスレッドで。
両方作って比較して結果書き込んでくれ
106 :
85 :2008/09/06(土) 14:59:54
107 :
デフォルトの名無しさん :2008/09/06(土) 16:52:24
eclipse3.3エウロパを使って開発しています。 そこで、antを使って独自のjarファイルを作成したいのですが、 うまくいきません。 build.xmlとかいうのを作成して、右クリックのantの実行ってやると、 --------------------------------------------------------------- Buildfile: D:\AppData\Eclipse\workspace3.3\Hoge\build.xml directory: compile: [javac] Compiling 1 source file to D:\AppData\Eclipse\workspace3.3\Hoge\Classes BUILD FAILED D:\AppData\Eclipse\workspace3.3\Hoge\build.xml:18: Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK. It is currently set to "C:\@Development\Java\jdk1.6.0_03" Total time: 297 milliseconds --------------------------------------------------------------- こんな風にエラーになります。 何が原因でしょうか?
>>107 >Perhaps JAVA_HOME does not point to the JDK.
>It is currently set to "C:\@Development\Java\jdk1.6.0_03"
>>81 一般にスレッドは他の資源よりリソースを消費する。
したがって、大量のスレッドを用いると問題が発生する可能性がある。
ノンブロッキングIOでは、スレッドの数を抑えることができるので、
スケーラビリティに有利となる。つまり、
クライアント数の増加に対する性能の劣化をそれなりに抑えることができる。
一方、ノンブロッキングIOを使うと、処理を振り分けるところを
自前で書かなくてはならないため、プログラミングが複雑になる。
しがたって、最初はクライアント毎にスレッドを使うように書いておいて、
問題が出てきたら NIO を使うようにリファクタリングするのがいいんじゃまいか
とよく知らない俺が書いてみる
110 :
デフォルトの名無しさん :2008/09/06(土) 17:20:20
>>108 そこなんだけど、それって環境変数設定しろってこと?
自分、java_home設定しないでeclipse は動いてるんだけど。
antもいけないのかな?
今jcpad使ってるんだけどどうも不便で・・・・ アプレットを簡単に実行できて軽い奴って無いかな
>>109 おまえアホだなw
どこがおかしいのか分かんないんだろうけどww
>>110 eclipse や ant が動いているのは、JREで実行しているのでは?
また、eclipseでのコンパイルは、eclipseに入っているIBMのコンパイラが
やっているので、環境設定は関係ない。と思う
115 :
デフォルトの名無しさん :2008/09/06(土) 17:36:02
appletviewer
116 :
デフォルトの名無しさん :2008/09/06(土) 17:43:37
antは腐ってるからな。 Java自体腐ってるけど。 Development\Java\jdk1.6.0_03\lib\tools.jarを Development\Java\jdk1.6.0_03\jre\lib\ext\tools.jarに こぴってやってみ。
117 :
デフォルトの名無しさん :2008/09/06(土) 17:51:16
jdk1.6.0_03をつかってるお前の脳みその方こそ腐ってないか?
118 :
デフォルトの名無しさん :2008/09/06(土) 19:29:48
119 :
デフォルトの名無しさん :2008/09/06(土) 19:32:19
>>114 そうだったんだw
javaインストールしないでeclipseだけで動くからふしぎだったんだw
>>116 あと、やっぱりtools.jarが自分の中には入ってないや。
どっかのサイトにもそれをパスに通すとかって書いてあった。
マジレスすると、そんなもんを ext の下に入れるな
>>110 eclipse の Java 設定で、JRE じゃなくて JDK を使うように設定してみたら?
[ウィンドウ]→[Java]→[インストール済みのJRE] で JDK のパスを設定。
122 :
デフォルトの名無しさん :2008/09/06(土) 22:42:54
自作のJavaプログラムをWindowsのスタートアップにEXEファイルとして 登録して実行させたいのですが、どうすればよいでしょうか? ちなみにバッチファイルにjava 〜と記載して実行させる事はできました。
じゃあバッチをキックするexeを作ればいいんじゃね? つかスタートアップにバッチファイルを登録しておくのは何でダメなの?
124 :
デフォルトの名無しさん :2008/09/06(土) 22:48:11
>>123 ただ単にEXEファイルからJavaのプログラムが呼び出せないかなと
思っただけです。もちろんバッチで事足りてますが…。
コマンドを実行するだけなら、わざわざバッチファイルにせんでも、ショートカットに記述するだけで十分だと思うが。
javaをexeにするって馬鹿の考えそうなことだな
サービスに出来るとかいう機能もあるやつ、なんだっけな〜
やり方も何もexeにする必要性あるのか?
exeにするとネイティブだから速くなるとか
以前にチャットの質問をしたものです。どちらも作ってみろトのことで、ノンブロッキングIOでのサーバーを作っているのですが クライアント側で String message socket.getOutputStream().write(message.getBytes()); で文字列を送り、サーバー側で private void doRead(SocketChannel channel) { try { ByteBuffer buf = ByteBuffer.allocate(BUF_SIZE); if (channel.read(buf) > 0) { buf.flip(); byte[] bytes = new byte[buf.limit()]; buf.get(bytes); String line = new String(bytes, 0, buf.limit(), "UTF-8"); System.out.println(line); }}} とやると、おくった文字が、ひらがなや漢字の場合に文字が??にかわってしまいます。 bytesをStringに戻すにはどうしたらいいでしょう。。。
135 :
デフォルトの名無しさん :2008/09/07(日) 03:44:43
すいません。 BUF_SIZEは int BUF_SIZE=1024; です
UTF-8が悪かったみたいです。 くだらない質問すいませんでした。解決しましたor2
137 :
デフォルトの名無しさん :2008/09/07(日) 04:17:54
相変わらず糞スレだな
>>137 初心者歓迎のスレならこんなもんだろ。
輝くような質問とレスの応酬になったらキモいだろ。
139 :
デフォルトの名無しさん :2008/09/07(日) 05:39:08
141 :
138 :2008/09/07(日) 10:39:12
>>139 だな。
末尾が「だろ」で両方終わってるし、低脳だよな。
よし逝ってくる。
exeにするなんてJavaの思想に反してるじゃん
143 :
デフォルトの名無しさん :2008/09/07(日) 11:05:20
ぬるぽ ぬるぽ ぬるぽ
145 :
デフォルトの名無しさん :2008/09/07(日) 11:17:49
>>142 Javaの思想とかおまえが偉そうに語らなくていいから、糞は黙ってろ
exeにしようなんてセンス無さ過ぎて笑うに笑えない
147 :
デフォルトの名無しさん :2008/09/07(日) 11:26:23
148 :
デフォルトの名無しさん :2008/09/07(日) 11:32:06
>>142 Javaの思想を語ってもらえませんか?少しでいいんでお願いします!
Write once, Run anywhere
150 :
デフォルトの名無しさん :2008/09/07(日) 12:37:59
糞スレ街道まっしぐら!
糞連発してる奴は
>>149 の発言で
言い返せなくて涙目www
Javaクラスファイルの難読化ソフトであるDonQuixote
ttp://donquixote.cafebabe.jp/index.html を使っている人いますか?
Solaris10 for x86(5/08)上で使おうとしているのですが,BCELをとってきて
CLASSPATH=/PATH/TO/bcel-5.2.jar:... のように設定しても
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/bcel/util/Repository
Caused by: java.lang.ClassNotFoundException: org.apache.bcel.util.Repository
というエラーメッセージが出ます どのようにすれば動くのでしょうか?
153 :
デフォルトの名無しさん :2008/09/07(日) 16:06:05
>>151 いいかげんにおまえが糞ってことに気がついたらどうよ?
JSAPIの実装にFreeTTSがありますが、 日本語に対応したオープンソースのJava APIってありますでしょうか? nativeライブラリだと見つかるので、JavaAPIがないようならJNI使って呼び出すか、 外部プロセス起動で実行させるかしかないですよね・・・
155 :
デフォルトの名無しさん :2008/09/07(日) 18:17:13
exeなんて古生代の形式に戻す必要あるのか
Javaのプログラムをjarファイルにしても 解凍ソフトでjarを解凍してクラスが抽出できるから Jadとか使って逆コンパイルすると ソースを見られてしまうのですが これを防ぐ方法はありますか?
難読化でぐぐれ
javaを使用しない
159 :
デフォルトの名無しさん :2008/09/07(日) 18:23:46
難読化はできるが完全に読めなくすることは不可能 てか、ソースを見られてなにか困るのか? どんなプログラムでも基本的に解析しようとすれば解析できる 少なくともコンピュータには理解できるわけだからな
完全に読めなくすることは可能
>>156 逆コンパイルする気にさえならないようなソフトは無敵
実行もできなくなるけどな
Javaのソースコードに暗号化をかけることはできますか
165 :
デフォルトの名無しさん :2008/09/07(日) 18:41:46
166 :
デフォルトの名無しさん :2008/09/07(日) 18:49:20
めちゃくちゃソースを分かり難く書いて、 解析する時間が無駄と思わせるようなソースにすればいいんじゃない? 部分的に流用可能なソースも難しいように、スパゲティ構造にしてw 難読化ソフトって使ったことないのだが、上記のようなソースに変換してくれるものとは違うのかな?
168 :
152 :2008/09/07(日) 20:07:31
169 :
デフォルトの名無しさん :2008/09/07(日) 20:27:00
解読しても価値のないプログラムを書けばOK
難読化?HSPで書いたら完ぺきだな。 自分でも読む気失せるぞあれは。
言語がJavaでなくていいなら、intercalかAPLが最強で最凶で最狂でしょ。
バイナリエディタでマシン語じか打ちだろ。 ソースコード?存在しません。
逆アセンブルでソースになっちゃう
それは目的と手段を間違えている
176 :
デフォルトの名無しさん :2008/09/08(月) 01:12:45
UbuntuでJavaできないんですけど。。。 ちなみに8.04です
int []a=new int[5]; a[ZERO]=0: a[ONE]=1; … こんな感じで配列を定数で置き換えたいときってどういう方法がメジャでしょうか? interface NUM{int ZERO=0;int ONE=1;…} class Hoge implements NUM{} class Hoge{ private final int ZERO=0; private final int ONE=1; …} enum NUM{ZERO,ONE,…} … int []a=new int[5]; a[NUM.ZERO.ordinal()]=7; 列挙で扱いたい気がするけれど、javaの場合整数値と直接結びつかないから ordinalを呼ばないといけないし、理由は忘れましたがordinalを使うようなやり方は 止めるべきという話を以前見聞きした気がします。
なんでそんなことしたいの??
良く分からんが、とりあえず、EnumMap
180 :
デフォルトの名無しさん :2008/09/08(月) 06:08:38
普通に final int ZEEL=-1;
>>176 Synaptic で JRE 入れれば動くはず。
あとは gcj とかぶってないか確認しろ。
>>177 ZEROでa[0]にアクセス、ONEでa[1]にアクセス、…てことなら、
配列そのものをクラスに包んでアクセサ作るのが言語的に”メジャ”っぽいと思う。
class Foo {
enum Num { ZERO, ONE, … };
private int[] a = new int[〜];
int get(Num num) {
switch(num) {
case ZERO: return a[0];
case ONE: return a[1];
:
}}
void set(Num num, int value) {
switch(num) {
case ZERO: a[0]=value;
case ONE: a[1]=value;
:
}}}
なんでスイッチ…
184 :
182 :2008/09/08(月) 16:36:16
すまん、EnumMap使ったことないもんだから。 こう? class Foo { enum Num { ZERO, ONE, … }; private Map<Num,Integer> a = new EnumMap<Num,Integer>(Num.class); int get(Num num) { return (a.containsKey(num) ? a.get(num) : 0); } void set(Num num, int value) { a.put(num, value); } }
185 :
デフォルトの名無しさん :2008/09/08(月) 17:11:39
効率悪い
186 :
167 :2008/09/08(月) 17:35:46
enum Mum { ZERO { public int getValue() { return 0; } } , ONE { public int getValue() { return 1; } } , ; public abstract int getValue(); }
187 :
186 :2008/09/08(月) 17:36:37
ごめそ167というのは間違い。
なんで素人がやたらメモリとか気にするわけ?
参照してる記事がメモリうんぬんと書いてるから、気になったんだろうな。 全く気にしないのも問題だが、それで勉強してるレベルなら、まだ早いよ。
>>190 素人だからこそ気にするべきなんだろ
そんなのもわからない阿呆はやめちまえ
193 :
デフォルトの名無しさん :2008/09/08(月) 18:52:44
メモリもそうだけど、配列アクセスの方がCPUに大きく影響するよ。 あまり記事になってないけど、arr[k]は範囲チェックが必ず入るから、arr[k]を一回アクセスするだけで、 JVM内では(隠れて) if (0<=k && k<arr.length) が呼び出されてる。 だからメモリを気にしながら設計するのも大事だけど、byte[1000*32]とか良く作るんだし、配列アクセスの方を気にしたほうがいいよ。
194 :
デフォルトの名無しさん :2008/09/08(月) 18:56:34
メモリの方は、PCだけの人は気にならないんだろうけど、携帯とかアプレットとかあるし。 アプレットはまだ携帯とか小型端末じゃみれないけど、そういう小型機器はメモリが極小64kbとかだから、 メモリの方も気にしなければいけない。
性能に頼ってプログラミングしている気でいる現代の若者を見てると おじさん悲しくなってくるよ
196 :
189 :2008/09/08(月) 19:01:45
みなさんレスありがとうございます。
それで結局のところどちらなのでしょう・・?
おかしな質問だとは自覚しているのですが、気になって仕方がありません。
どうかよろしくお願いします。
>>193 配列って使うんですか?
コレクションフレームワークのほうが高機能なので配列よりそちらを使うようなことを書いてましたが。
素人が気にし出すとろくなことにならんよ ちゃんと理解出来ないんだから勘違いの嵐
>>196 変数やメソッドの種類と、JVMによる。
199 :
189 :2008/09/08(月) 19:37:23
>>197 そうは言いますが、素人向けの説明でメモリの話が出てきてるのだから、
やはり重要だと思うのですが・・・
たとえ今は理解できないとしても、ステップとして踏んでおくべきだというのが私の考えです。
書籍やWebからの情報でも、100%ちゃんとした説明できる人のほうが少ないと思うので、
勘違いがあるのは当然だと思います。
そういうのは後々間違いに気づいていくので、
はじめの段階では特に問題視する必要はないと思います。
お答えいただけないようなので別のとこで質問しなおしたいと思います。
というわけで質問しめます。
200 :
デフォルトの名無しさん :2008/09/08(月) 19:43:46
配列はね、CharBufferとかでよく使うよ。 素人向けの解説だとStringBuilderとかなのかもしれないけど… 初心者の壁を越えられるかどうかは、java.nioの解説やAPIを熟読して理解できたかどうかだろうけど、ネイティブのファイル・アクセスとメモリ(ポインタなど)は難しいからな…
201 :
デフォルトの名無しさん :2008/09/08(月) 19:47:18
>お答えいただけないようなので別のとこで質問しなおしたいと思います。 こういうのは生意気だし、「ばくちゃん、まだ身の程をわかってません!」って感じww
202 :
189 :2008/09/08(月) 19:50:30
>>200 ありがとうございます。
あとでそのクラスを調べてみます。
>>201 私は自分のことを客観的に見ることができるんです。
あなたとは違うんです。
なんだ釣りか
スレに張り付いてまでいちいち煽るくらいなら 少しのヒントを出すぐらいすれば まだ自分の優位性をアピールできるだろうに。 気持ち悪いやつだ
205 :
189 :2008/09/08(月) 20:17:22
>>203 ちょっと生意気な閉め方したら食いついてくる人がいると思って、
最近はやりだったから言ってみたかったんです。すみません。
変な質問だとは自覚してましたが、本当に聞きたかったことなので、
またで直します。
質問をお願いします. java.awt.event.KeyEvent を使用してキーの同時押しを持ってきたいのですが、 スペース 押下時に、 上 と 左 の同時押し(結果的に3つ) を取ろうとすると、 KeyEvent.VK_UP と KeyEvent.VK_LEFT が帰ってきません。 順番を逆にし、上左押下時のスペースは持ってこれます。 他の組み合わせ(スペース + 上右、下左、下右)はどれも正常に動作します。 KeyEventについて詳しくないのですが、これはどういうことなのでしょうか?
コーディングが悪いんでないの? if文の順番が変とか。 ソース晒してみ
208 :
206 :2008/09/08(月) 20:39:22
すみません訂正です >順番を逆にし、上左押下時のスペースは持ってこれます。 これも KeyEvent.VK_SPACE がもってこれません
210 :
206 :2008/09/08(月) 20:51:54
>>209 なるほど、ありがとうございました。
スレ違ったようですみません
>>207 おかげさまで原因がわかりました
ありがとうございました。
>>205 メモリの使い方がどうとか言い出すと
JVMの仕組みについて勉強しないと。
局所的に見て、変数が定義されていたら内部はどうなるの?なんて質問きたら
じゃぁこの場合はあの場合はって芋づる式に疑問が増えてくる。
メモリについて知りたいなら、それ専用の本を読んでから質問しないと。
中学生までなら許せる質問
テキストファイルを2つ読み込んで比較するdiffツールもどきを作っているのですが、 読み込むテキストファイルの文字コードがわからない場合は FileInputStream("file.txt"), "Windows-31J"); みたいなのをコード分(SJISとかEUCとか……)書かないといけないのでしょうか? 効率的なやり方があればよいのですが……。
>>213 コードの違うファイルで一致する場合を検出したいと言うこと?
>>214 いえ、どこで使うかわからないからコードの違うファイルでも普通に判定しろ、ということらしいです……。
JISAutoDetectのことかな。 誤認識することもあるから文字コードを指定するオプションもあったほうがいいかもしれない。
>>213 いっその事、byte[] でバイナリ扱いのまま比較しちゃって良いんじゃね?
改行は自分で処理しなきゃいけなくなるけど。
不明な点がありますので質問させていただきます。 djUnitを使ってjavaプログラムの単体試験を行っています。 addReturnValueを使ってわざと例外を発生させたいのですが、 ResultSet rs = stmt.executeQuery(sql); の部分で例外を戻すように指定するには、 NullPointerException e = new NullPointerException(); addReturnValue(”Statement”,”executeQuery”,e); のような感じでよいのでしょうか? Statementは拡張してTestStateというサブクラスでオーバーライドしているのですが、 クラスの部分は”Statement”で良いのでしょうか? 何度やってもRuntimeExceptionが発生するか、 addReruenValueを反応しないかになってしまうので質問させていただきました。 もしご存知の方いらっしゃいましたら、お手数ですかよろしくお願いします。
219 :
デフォルトの名無しさん :2008/09/08(月) 23:38:12
作っているところに質問したら? バグも多いし、1.5系じゃまともに動かないからもう使ってないけど。 それに、それって単体テスト自体の問題だと思うけどな
>219 素早いお答えありがとうございます。 このような質問は作っているところに聞いたほうがいいですね・・・ スレ違い気味な質問申し訳ないです。 再度テストプログラム自体を見直してみたいと思います。ありがとうございました。
>>189 の記事見たが、なんだこりゃ?
ちょっとこれはひどいんでないの?
悪いがこれ自体初心者は見ないほうがいいと思うぞ。
もっとまっとうな記事なり本なりあるだろう多分。
222 :
デフォルトの名無しさん :2008/09/09(火) 06:56:37
>>212 高校生以上で、芋ずる式質問以外の質問をしなければいけないとはどういう質問のことをいうですか?
223 :
デフォルトの名無しさん :2008/09/09(火) 07:01:44
エラー 1 個 C:\DOCUME~1\MYDOCU~1\MYJAVA~1> これとかバカだろw いまどき MYJAVA~1 はないだろ。こいつの脳は20年前のままなんだろうけど、いわゆるバカだなw それと、そこのITの記事は、NTTデータの何とかとか言うのが記事かいてるのあるけど腐ってる。 たぶんNTTデータの落ちこぼれか雑用係が記事書いてんじゃねーか? NTTなめんなww
winnyにいちゃもんつけるぐらいだし、京都警察の方がGメン気取りでウザイけどなw
189の記事そんなに悪し様にののしるほどひどいとは思えないけど。
186のコード見てなんだこりゃと思って調べたらenumこんな使い方があるんだな。 知らなかったのオレだけ?
10 15 20 GOTO 15 RENUM 10 20 30 GOTO 15 ERROR
どんだけボロいBASICだよ っつかその頃のBASICは中間コードで保持してて LISTでソース復元が主流じゃなかったか? だからそんなことは起きない
JDK1.5.0でクラス名の取得について質問です。 private void hoge(Object obj) { if (obj instanceof List) { // リストの先頭の値からgetClass()で取得する } else { // objからgetClass()で取得する } } こうしたソースがあるのですが、 objがリストで来た場合にリストのサイズが0だと、 リストに格納するクラス名がわかりません。 取得する方法はありますでしょうか?
230 :
デフォルトの名無しさん :2008/09/09(火) 13:45:43
無理。そもそもListにはどんな型でもgenerics使わなければ入れられる上に、使ったところで静的解決だから意味がないです。
>>229 >objがリストで来た場合にリストのサイズが0だと、
>リストに格納するクラス名がわかりません。
これの意味がわからないんだけど・・・。
サイズ0なら空なんだから何も取り出しようがないと思うんだけど・・・
すみません、説明不足でした。 例えば上記ソースでクラス名を標準出力する場合、 List<Integer> list = new ArrayList<Integer>(); this.hoge(list); この場合に標準出力に欲しいのは「Integer」という文字列です。 list.add(new Integer(0)); などとしてやれば、リストから取り出した値の型はわかるのですが、 リストのサイズが0の場合でも本来入れる予定の型を取りたいのです。
だからそれは
>>230 が言ってるようにJavaのジェネリクスの原理上無理
どこが?
JTableでセルに文字を入力したらその文字が確定されて表示されますが、 ここでもう1度Enterを押すと、次のセルにフォーカスが移動するようです。 このフォーカスの移動を防ぐために、JTableにKeyListenerを登録して、 keyPressedでEnterキーの押下を検出したのですが、ここからどうすれば よいかが分かりません。 よろしくお願いします。
>>236 Action doNothingAction = new AbstractAction(){ public void actionPerformed(ActionEvent e){}};
KeyStroke enterKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
table.getInputMap(JComponent.WHEN_FOCUSED).put(enterKeyStroke, "doNothing");
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(enterKeyStroke, "doNothing");
table.getActionMap().put("doNothing", doNothingAction);
>>238 JDKだけ落として、後は自分で作れば?
240 :
デフォルトの名無しさん :2008/09/09(火) 22:29:15
あせらずスタンドアローンアプリ、普通のWeb、モバイルと進め。 ここで質問するような奴がいきなりモバイルとか無理だから
スタンドアローン、Web、モバイルの順ということは、 スタンドアローンが一番簡単で 次にWeb 一番難しいのがモバイルということですか?
サーバーサイドはやった事ないが設定周りではまりやすいサーバーサイドと実機検証で右往左往するモバイルはどっちが面倒だろうか? SE ME CDC/CLDCやってるが日本のMIDP端末はつまらん。
243 :
デフォルトの名無しさん :2008/09/09(火) 23:39:54
>241 難しいつーか覚えることがWebやモバイルのが多いだろ。 モバイルと普通のWebはどっちが難しいってのは微妙だけど情報の入手のしやすさから言ったらWebのが楽じゃね?
>>229 getClass()でその値を何に使うかによるが、
private <T> void hoge(List<T> obj)
を作れば解決できる処理かもしれない。
>>237 上手くいきました。
大変親切なコードに感謝します。
Javaで画像をサーバーに送信し、サーバー側では受信した画像をもう他のクライアントに送信 するということをしたいのですが、参考になるサイトなどはないでしょうか。。。
つ「ストリーム」
>>246 もうちょっと条件を出してくれ。
HTTPのみでやるのか、ソケット使っていいのか判らないと答えが広がりすぎて
的確に返答できん。
249 :
デフォルトの名無しさん :2008/09/10(水) 22:27:29
Eclipse3.4(Ganymede)で「Hello World」と表示する簡単なプログラムを作って、 それをjarファイルにエクスポートしました。 コマンドプロンプトから「java -jar HelloWorld.jar」と実行すると 「Hello World」と表示されるので、jarファイルは問題なさそうです。 しかしC言語でCreateProcess()を実行して上記コマンドを呼び出す プログラムを実行したところ、以下のエラーダイアログが出て異常終了してしまいました。 「Could not find the main class. Program will exit!」 mainを含むクラスが見つからない?とのエラーのようですが、 これは一体どのようにすれば実行できるようになるのでしょうか?
250 :
デフォルトの名無しさん :2008/09/10(水) 22:29:18
>「Hello World」と表示されるので、jarファイルは問題なさそうです ここから >しかしC言語でCreateProcess()を実行して上記コマンドを呼び出す こうなる流れが全くつかめない
>>249 1. 切り分けをする(jar ではなく、classファイルでやってみる。等
2. パスを疑う
252 :
246 :2008/09/10(水) 23:01:15
言葉足らずですいません。ソケットを使います。 文字列などはNIOをつかってサーバ側でスレッドが増えないように処理しているのですが、 画像はどう扱えば良いかわからず質問させていただきました。
>>252 ソケット使うなら、バイナリ送り込むだけじゃん。
254 :
249 :2008/09/10(水) 23:43:20
>>251 原因が判明しました。CreateProcess()の第2引数に
「java.exe -jar HelloWorld.jar」としてしなければいけない所、
第1引数に「java.exe」、第2引数に「-jar HelloWorld.jar」を指定していました。
失礼しました。
Runtime.exec()はシェルを経由するんですが、これを使わないでプロセスは作れるんですか?
>>255 Runtime.exe() は内部実装では CreateProcess 使ってると思うが。
シェルを経由ってどういうことをさしてるの?MS-DOS プロンプトが出るとか?
>>252 文字列が送受信できてバイナリが扱えない状況ってのが理解できん。
ソケットってバイナリストリームだからバイナリ→文字列って変換してるはずだろ。
なんでバイナリ扱えないんだよ。データの終端判定で悩んでるとか?
258 :
ウォン :2008/09/11(木) 13:26:31
どうもはじめまして。 java初心者でして、わからないことがありまして質問したいです。 ---------------------------------------------------------------------- txtファイルを読み込んだときにtxtファイルの内容が昇順に並び変わるという プログラムを作成するというものです。 そしてルールがsplitとInteger.parseIntを使いなさいとのことです。
259 :
ウォン :2008/09/11(木) 13:29:04
あと下記のプログラムを応用して作らなければならないらしいです。 import java.io.*; public class Test1 { public static void main(String[] args) { BufferedReader reader = new BufferedReader (new InputStreamReader(System.in)); try { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } System.out.println(""); } catch (IOException e) { System.out.println(e); } } } ---------------------------------------------------------- 下記はtxtファイルの内容です。 3:犬 5:鳥 9:虎 7:ライオン 1:猫 4:熊 2:馬 8:牛 6:ウサギ ------------------------------------------------- とにかく番号順に並び変わればよいそうです。 どなたかご指導お願いいたします。
261 :
デフォルトの名無しさん :2008/09/11(木) 14:23:17
(eclipseで)Javaのプログラムを作り、jarファイルを生成しました。 メモリを大量に消費するために、コマンドラインオプションとして -Xmx256M を付けてeclipse上では実行していました。 jarファイルをダブルクリックで実行したいのですが、このコマンドラインオプション自体を jarファイルに組み込むことはできるのでしょうか? それともコマンドラインオプションを付けてjarを起動するバッチファイル的なもの (WindowsならWSHとか?)を別に書かなきゃダメでしょうか?
262 :
デフォルトの名無しさん :2008/09/11(木) 15:28:24
>>261 バッチファイルでキックするか、exeでくるむかだね
263 :
デフォルトの名無しさん :2008/09/11(木) 16:47:30
Javaでデータベースからデータを取り出し、それをrtfファイルとして 生成するプログラムを作ったのですが、そのプログラムと同じフォルダにしか生成することができません。 windowsの「名前を付けて保存」みたいな感じで、 生成する際デスクトップやクリップドライブ等の場所を随時任意に指定することはできますか?
できます。
265 :
263 :2008/09/11(木) 16:57:42
ありがとうございます。検索ワード考え直して探しなおしてみます。
>>263 エスパーしてみると、パスの区切りは "\\" とか。
いや、JFileChooserだと思う。
268 :
デフォルトの名無しさん :2008/09/11(木) 18:24:24
どうしてこのスレでは糞糞とか言う人がいるんでしょうか?ニートか何かなんでしょうか?
>>261 public class Kicker {
public static void main(String[] args) {
try {
Runtime.getRuntime().exec("javaw -Xmx256M -cp ***.jar ***.MainClass");
}catch(Exception e){
}
}
をマニフェストのメインにしてjarを作ったらどうかな
270 :
263 :2008/09/11(木) 19:20:54
JFileChooserです。マニュアル熟読してimplementしてみようと思います。
コンパイルしたservlet(classファイル)をWEB-INFのclassesに配備したのですが、 htmlからの呼び出しに動作しません。 ほかのプログラムがweb.xmlに登録しているせいでしょうか? web.xmlにclassを登録していないせいでしょうか? それに関連して分からないのが、イチイチweb.xmlにservletを登録しなくてはならないのでしょうか?
現在、学校の方でJavaエクリプス3.2を使用しています。 真剣に悩んでいることがあるのでご教授よろしくおねがいします。 エクリプスで新規にプロジェクトを立ち上げるとルートディレクトリの中に 「bin」や「src」といったフォルダが作成されてしまい開発ができない状況です。 学校ではbinやsrcというフォルダはないのですが、家で新期にプロジェクトを 作成するとbinなどのフォルダが自動的に作成されてしまいます。 家でもプログラムの勉強をしたいのですが、これのせいで手がつけられない状態です。 本当に困っているのですが、どなたか詳しい方お力かしてください><
273 :
デフォルトの名無しさん :2008/09/11(木) 21:33:27
vistaでjavaを(Version 6 Update 7) インストールしたのですが 公式サイトでのjava(yahooゲームなど)は作動するんですが、タカミンお絵かきチャットなどそのほかでのjavaが作動せず 左上に白い四角に赤い×がついてしまい、表示されずこまっております はじめてのことなので全くわかりません 詳しい方どなたかおねがいします。
274 :
261 :2008/09/11(木) 21:50:01
>>272 Eclipseスレがあるからそっちに行くべきかも
binとsrcはそれぞれ、.classファイルと、.javaファイルが入るフォルダで、本来ならばそのように分けて開発することが好ましいとされてるよ。
で、単純にそのプロジェクトを選択した上で「新規」からクラスを作ればsrcに自動的に作成され、コンパイルされるとbinにclassファイルが生成されるんだけど・・・
もしかしてパッケージエクスプローラじゃなくてナビゲータかなんかを開いてるんじゃない?
>>275 アドバイスありがとうございます。
>>もしかしてパッケージエクスプローラじゃなくてナビゲータかなんかを開いてるんじゃない?
はい。
ナビゲータを開いてます;;
それがいけなかったのでしょうかね・・・
ちょっとためしてみますね。
アドバイス本当にありがとうございます><
周りに聞けるような人がいないから助かります。
ありがとうございました。
Sビデオ出力を持っているビデオカメラの動画をキャプチャボードを利用して PCで取得し,静止画や動画として保存したいと思っています. JMFを調べてみたりしているんですが,なかなかそのものなサンプルが無いので困っています. コマンドラインでキャプチャを制御できるソフトなどがあればProcessBuilderなどで できると思うんですが,それも見つかりません・・. Javaで上記のようなことをする際に便利な方法をご存知の方はいらっしゃいませんでしょうか?
>>271 アプリケーションサーバの方でプロジェクトのルートをxmlで登録する。
WEB-INF以下のclassesにコンパイルしたファイルを入れる。
この後アプリケーションサーバを再起動させないとダメだったりすることが多々ある。
上の設定ちゃんとしてるならサービスから再起動してみては。
String str = "文字列"; char array[] = str.toCharArray(); System.out.print(array.toString()); としたらなんかぐちゃぐちゃになるんですけど何故? よろしくお願いします。
280 :
デフォルトの名無しさん :2008/09/12(金) 00:58:50
意味が解ってないからだと思います
282 :
271 :2008/09/12(金) 02:22:20
>>278 >アプリケーションサーバの方でプロジェクトのルートをxmlで登録する。
>WEB-INF以下のclassesにコンパイルしたファイルを入れる。
アプリケーションサーバ(Tomcatのことですか?)で
プロジェクトのルートをXMLに登録すると言うところが分かりません。
>WEB-INF以下のclassesにコンパイルしたファイルを入れる。
classesにはプログラムは入っています。
283 :
271 :2008/09/12(金) 04:11:35
>>277 画像取り込みとか普及しだしてもう何年も経ったんですけど、まだjavaでは普及してないんですか。
たしかJMFのスレがあったんでそっちだと知ってる人いると思います。
いまではストリームで動画とか当たり前なのにjavaではまだ不便なんですか…
Javaで何らかのストリームを開いた後クローズするのを忘れた場合って どういう副作用があるのでしょうか?
>>286 閉じ忘れのせいでファイル開ける上限超えた場合に新しいファイル開けなくなるとか、
close() で出力されるはずだったデータが出力されないとか。
>>288 せいぜいファイル2つぐらいしか使わない自分用プログラムなら問題になりにくいってだけ。
もっとも、
>>287 の2行目の問題については全然大丈夫じゃない。
290 :
271 :2008/09/12(金) 15:28:51
>>285 だめでした。一応環境はTomcat5.5です。
291 :
271 :2008/09/12(金) 15:31:43
ページが存在しないと表示されます。
>>271 はうざい。
ちゃんと本を買って勉強しろ!
293 :
デフォルトの名無しさん :2008/09/13(土) 10:46:32
jdkが開発するためのもので、 jreが利用するためのものですよね? jreは元々入ってるみたいなので、 jdkを落としたいんですけど、 色々あってよく分りません。 どれを落とせばいいのでしょうか?
最新で良いでしょ
295 :
デフォルトの名無しさん :2008/09/13(土) 11:03:48
どれをダウンロードするかって意味か?<色々あって〜 JDK 6 Update 7 で通常はOK JDK 6 Update 7 with NetBeans 6.1 は無償の開発環境のNetBeansってのが付いてくる 統合開発環境も欲しければこっち
296 :
デフォルトの名無しさん :2008/09/13(土) 11:10:08
class sample{ HashMap sample = new HashMap(); sample.put( "1", 1); //@ } @部分見たくフィールドでputって何でできないんだっけ… なんか遊びでプログラム作ってたらアレ?ってなって… 詳しい人教えてくださせあ;
できねえよ
まあ、それだけだとアレなんで、 {} でくくってみろ インスタンス初期化子でググれ
299 :
デフォルトの名無しさん :2008/09/13(土) 11:17:16
>>297 うん。できないのは分かってる。
もう少し突っ込んだ理由が欲しかっただけなんだ…(´ω`)
300 :
デフォルトの名無しさん :2008/09/13(土) 11:20:00
>>299 クラスに定義できるのは、フィールド、コンストラクタ、メソッド、初期化記述子の何れかではなくてはならない、と言語仕様が定めているから。
301 :
デフォルトの名無しさん :2008/09/13(土) 11:23:25
>>298 ありがとうっ!てかSUGEEEE!
SJC-P持ってるがこんなのあったかな…。
でも解決方法はなんとなくわかったが、なんでダメなのかがわかんないっス…
302 :
デフォルトの名無しさん :2008/09/13(土) 11:27:58
>>300 言語仕様かぁ…。
スレチになってくるのかもしれないけど、
なんで言語仕様的にダメなのか分かったら教えてください…
頭悪くてね…結構根っこの理由まで知らないと納得できないんだ…orz
>>301 ロジカルな理由は
>>300 だが、直観的には、class直下の記述は宣言/定義であって、上から実行される実行文じゃない、というところか。
304 :
デフォルトの名無しさん :2008/09/13(土) 11:31:49
>>302 その実行命令はどのタイミングで実行されるかわからないからだろ。
初期化の時なのか、コンストラクタ実行時なのか、メソッドが呼ばれたときか、明示しないとJavaはダメ
スクリプト系言語だと上から下へ実行する、って暗黙の了解があるだけで、Javaはエントリポイント(main)から順次メソッドなどを呼んで行くしかない
305 :
デフォルトの名無しさん :2008/09/13(土) 11:32:50
失礼。 暗黙の了解っていうか、スクリプト系言語の仕様では、だな。
306 :
デフォルトの名無しさん :2008/09/13(土) 11:39:29
>>303 ,304
あー なるほどっ
フィールド変数が存在するタイミングでなんとなく呼ばれてできるような
気がしてたけど、言われてみればおっしゃる通り。
今日だけ先生と呼ばしてください。
ダメだ 明日もそう呼べ
じゃあ俺も先生
SJC-P持ってるならそれぐらいわかれよ・・
311 :
デフォルトの名無しさん :2008/09/13(土) 18:46:33
投稿させていただきます。 キャンバスに絵を描くプログラムを書いているのですが、したのコードだと画面のちらつきが 目立ち、もっとスムーズに書くことは出来ないかと悩んでいます。 したにコードをあげるのでもしよければ改善点を指摘してください
312 :
デフォルトの名無しさん :2008/09/13(土) 18:49:27
class paintCanvas extends Canvas implements MouseMotionListener,MouseListener{ Vector drawList; int sx; int sy; public paintCanvas(){ addMouseListener(this); addMouseMotionListener(this); setBackground(Color.WHITE); drawList = new Vector(); }
313 :
デフォルトの名無しさん :2008/09/13(土) 18:50:28
public void paint(Graphics g) { //すべての要素を描画 for (int i = 0; i < drawList.size(); i++) { Drawable drawnObject = (Drawable)drawList.get(i); drawnObject.draw(g); } } public void mousePressed(MouseEvent e){ sx = e.getX(); sy = e.getY(); } public void mouseDragged(MouseEvent e) { int x = e.getX(); int y = e.getY(); //リストに新しい線分を追加 Line line = new Line(sx, sy, x, y); drawList.add(line); repaint(); sx = x; sy = y; } }
314 :
デフォルトの名無しさん :2008/09/13(土) 18:51:43
interface Drawable { public void draw(java.awt.Graphics g); } class Line implements Drawable { public int x1, y1, x2, y2; public Line() {}; public Line(int x1, int y1, int x2, int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; } public void draw(java.awt.Graphics g) { g.drawLine(x1, y1, x2, y2); } }
>>311 Swingにするとダブルバッファリングが効く
extends Canvas → extends JComponent
public void paint(Graphics g) { → public void paintComponent(Graphics g) {
あと、フレームが Frame なら JFrame に
316 :
デフォルトの名無しさん :2008/09/13(土) 20:01:13
javaからちょっと離れるかもですが、 log4jについて教えてください。 ルートロガーにアッペンダーとしてconsoleが指定されてる状態で、 jp.co.XXXX.SampleLoggerってロガーを作ったとします。 jp.co.XXXX.SampleLoggerではconsoleに出力したく無いのですが、 ルートロガーのアッペンダーをいじらずに何とかできないでしょうか。
317 :
316 :2008/09/13(土) 20:01:59
設定はlog4j.xmlで行っています
318 :
デフォルトの名無しさん :2008/09/13(土) 22:42:23
いいから、ルートから外せ
GCについての質問です。 sunのJVMは1.4から世代別GCがデフォルトになってますが、 IBMのJVMは1.5で世代別が追加されたものの、 デフォルトは世代別ではなくクラシカルなGCを ベースにしているようです。 両者のスタンスの違いは、極端なケースは別にしても、 必ずしもどちらかが有利な訳ではない ということなのでしょうか?
SJC-Pってインスタンス初期化子もでてこないの?
>319 単に考え方の違いじゃない? 世代別GCは重いからマーク&スイープ+弱参照カウンタにしたのがPythonで 並列マーク&スイープにしたのがSpiderMonkeyで・・・云々とGCの手法なんて色々ある。 それぞれメリットとデメリットがあるんだし。
322 :
デフォルトの名無しさん :2008/09/14(日) 00:40:40
>>319 その差が問題になるほど大層なもん作ってるのかい?
やり方の違いだったらば一長一短
まあ、後発の技術の方が長が多いのは必然だけどな。
323 :
デフォルトの名無しさん :2008/09/14(日) 00:51:00
と、糞は妄想していますw
>>319 IBM JavaがクラシカルなGCをベースにしてるって書いてあった?
325 :
デフォルトの名無しさん :2008/09/14(日) 01:41:55
なんでもいいけど、お勧めのエロサイトおしえてくれよ。 やっぱ土曜の深夜はエロサイトめぐりだろ。おまえらも勉強はそこそこにして息抜きと○抜きしろよ。
ババ抜きですね
いやジジ抜き
>>315 ありがとうございます。無事解決しました
329 :
0.0.0.0 :2008/09/14(日) 10:41:46
皆どんなアプリケーション作ってる? プライベートでね。
クラスローダを通してのクラスの実行は可能ですか?
331 :
デフォルトの名無しさん :2008/09/14(日) 11:37:32
>>329 噴水のようにゴキブリとか糞が噴き出してるアプリだお
332 :
デフォルトの名無しさん :2008/09/14(日) 12:17:04
class CL1 implements Serializable { int value; int[] array; } 直列化したときvalueは自動で保存されますが、arrayの要素まで保存されるんでしょうか? それと writeObjectを明示的に実装すると、フィールドにtransientがあるかないかに係わらず 直列化されないみたいなんですけど、これはjava.lang.Objectの仕様ですか?
333 :
デフォルトの名無しさん :2008/09/14(日) 12:18:59
保存されるされる。 writeObjectを明示的に実装したならばその実装次第だろ、JK
arrayはSerializableを実装してないから無理。
>>334 配列はCloneableとSerializableを実装している
ObjectOutputStreamは仕様も複雑化してるし難しいからな…
writeObject()だけだからダメなんで、readObject()の方も実装してないからじゃね?
申し訳ないですがまた質問させていただきます。 自分で描画した画像(JPanelの上に)をイメージにして保存したいのですが、どうすればいいでしょうか。 保存先を特に指定することはありません。。
配列は大丈夫ですか。ありがとうござました。
341 :
319 :2008/09/14(日) 14:03:31
>>338 ファイルへのアウトプットってこと?
セオリーかどうかはわからんが
JPanel panel = getPanel();
File output = new File("anywhere");
BufferedImage im = new BufferedImage(panel.getWidth(), panel.getHieght(), BufferedImage.TYPE_INT_RGB);
panel.paintComponent(im.getGraphics());
javax.imageio.ImageIO.write(im, "png", output);
てなかんじでどう。
>>321 >>322 レスありがとうございます。
選択可能ということは一長一短なんだと思いますが、
後発に分があると思っていたら、
IBMはデフォルトを保守的な設定にしていることに気付き、
??と思った次第です。
その差が問題になるほどのものを作ってるか?というと、
負荷をかけたらヒープがつらいことになってしまった
というのが発端なので、その程度のレベルでございます。
344 :
デフォルトの名無しさん :2008/09/14(日) 14:38:07
TYPE_INT_ARGB_PRE じゃないの?
AN HTTPDおよびJAVAアプレットについての質問です。
AN HTTPDでサーバーをたてました。
サーバパソコンから
http://localhost/でアクセスすると きちんと.classファイルを読み込んでJAVAアプレットが表示されるのですが、
外部のパソコンから
http:// (グローバルIP)/でアクセスすると
.classファイルがnot foundになりアプレットが表示されません。
どうすれば外部からアクセスしても表示されるようになるでしょうか?
ユーティリティクラスを作る際のことですが ・通常のクラスを作りstaticメソッドでユーティリティの機能を実装し、コンストラクタをprivateで隠蔽する方法 ・抽象クラスを作りstaticメソッドでユーティリティの機能を実装する方法 上の2つではどういった理由でどちらが望ましいですか? もしくはどういった状況で使い分けるべきですか?
・作って動かしてみてからリファクタする方法 ってのはどうだ。
結局最初に作ったままになるんですね、わかります。
>>346 継承されないから前者じゃね?
final class にもできるし。
はじめまして。Java素人です。jspで書かれたログインページにユーザー名とパスワードを入力して
その結果を表示するプログラムを作りたいのですが、うまくいきません。(ログイン前の画面が表示されてしまいます。)
見よう見まねで書いてみたプログラムは以下のようなものです。
どなたか解決策をご存知の方教えて頂けますか?
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
public class AutoReserve {
public static void main(String[] args) {
PostMethod method = new PostMethod ("
https://hogehoge/login.jsp ");
HttpClient httpclient = new HttpClient();
method.addParameter("username","xxx");
method.addParameter("password","yyy");
try {
int result = httpclient.executeMethod(method);
System.out.println(result);
System.out.println(method.getName());
System.out.println(method.getStatusText());
System.out.println(method.getPath());
System.out.println(method.getResponseBodyAsString());
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
method.releaseConnection();
}
}
}
情報が足りないようであれば、具体的にそのページのURLも書き込みます。
351 :
デフォルトの名無しさん :2008/09/14(日) 22:58:46
httpsとかなっているけど、証明書とか大丈夫? あとは何をもってログインページの表示と、ログイン処理を分けているかだと思うけど、POSTならばって条件は正しいの? 例えば、action=doLoginとかそんなパラメータは必要にならない?
Hoge h1 = new Hoge(); Hoge h2 = new Hoge(); h1 = h2; というようなコードがあった場合、メモリリークしますか?
>>351 早速のご回答ありがとうございます。
> httpsとかなっているけど、証明書とか大丈夫?
HTTPSについての知識はありませんが、
ttp://q.hatena.ne.jp/1131072683 ここの回答者1の文章を読む限りだと大丈夫かなぁと思いました。
> あとは何をもってログインページの表示と、ログイン処理を分けているかだと思うけど、POSTならばって条件は正しいの?
> 例えば、action=doLoginとかそんなパラメータは必要にならない?
ログインページの表示とログイン処理を分けているというのがよくわかりませんが、対象のページのソースを表示すると
HTTPでFORMタグにMETHOD="POST"という記述があったのでPOSTが適当だろうと判断しました。
やはり具体的な状況を説明したほうがよさそうですね。
ttps://yoyaku.city.yokohama.jp/sports/index.jsp このWebサイトの「予約・抽選申込」のページにJavaでログインしようと思っています。
なお、運営時間は9:00〜24:00です。
質問させてください。 下記の流れで検索処理を作成したみたのですが、 jsp1 …条件入力して検索ボタン押下 ↓ serv1 … DBからデータ取得して、list<beanクラス>に保存 ↓ jsp2 … listの内容を展開 ↓ serv1 ↓ jsp3 jsp2からjsp3へ遷移する際に、serv1で取得したlistを利用して、 別なデータを取得しているのですが、複数ブラウザで実行した場合、listの内容がその都度変わってしまい、うまくいきません。 一般的にどのように処理をするのでしょうか?
>>352 >Hoge h1 = new Hoge();
>Hoge h2 = new Hoge();
>h1 = h2;
1行目で生成されたHogeインスタンスは「そのうち」ガベコレされるからメモリリークしない。
357 :
デフォルトの名無しさん :2008/09/15(月) 09:40:04
>350 どうみてもPOST先はlogin.jspじゃねーな ログイン画面のformタグをみてみろ パラメータの名前も一致していないし、その程度もわからないならば無理だろうね ちなみに、一番簡単なのはログインするときのHttpRequestをキャプチャしてそれに合わせたリクエストを投げる事。 ついでに言えば、下手したら不正アクセスで捕まるから注意した方がいいと思う。
質問です。 JavaでGUIアプリを作成するというのは、あまり一般的では ないのでしょうか? 自分はSwing1
途中で送ってしまいました。。。失礼 自分はSwingでGUIアプリを作成しようと思っていたんですが、 VBとかVC#とか使ったほうが簡単だよ!みたいなことを 言われました。 JavaでもJBuilderを使えばフォーム作れるのに・・とか思っていたんですが。。
360 :
デフォルトの名無しさん :2008/09/15(月) 11:50:07
それでどっちが簡単だった?自分が簡単だったと思った方を選べばOK。 無論、簡単に作るのが目的であれば、の話だけど。 君がJavaでやりたいんだ!と思うならVB/C#はハナから対象外だろ。 SwingでもSWTでも選ぶといい。 でもここだけの話、Delphiの方が(ry
toString()について質問です。 javadocには「人間が読める簡潔で有益な情報であるべきです」とありますが、 例えばリスト構造でそれぞれのデータまで表示するように複数行に渡る文字列を返すのは「簡潔」でなくなるのでしょうか? また、toStringの処理は多少重くなってもいいのでしょうか? 自分はtoStringは基本的にそのオブジェクトの情報を知るために使用するため、デバッグ時にしかほとんど使用していません。 よってString.formatなどの、重いが簡潔な記述が出来る方法も頻繁に使用しています。 答えはないと思うので意見をお聞かせください。
>>357 スレチだけど、自分のIDとパスを使うだけなら不正アクセスとはならないんじゃない?
363 :
デフォルトの名無しさん :2008/09/15(月) 16:28:19
質問です java1.4、macOSX10.3を使っています File f = chooser.getSelectedFile(); bimage = ImageIO.read(f); g.drawImage(bimage, 0, 0, this); 選択したファイルを読み込んで表示するのですが、ちゃんと表示されて動作には問題が 無いのに、コンソールには大量のエラーが表示されます apple.awt.EventQueueExceptionHandler Caught Throwable : java.lang.NullPointerException java.lang.NullPointerException at apple.awt.CRenderer.copyImage(CRenderer.java:860) at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:147) at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3120) at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3110) at sam.ImageView.paintComponent(ImageView.java:34) at javax.swing.JComponent.paint(JComponent.java:808) at javax.swing.JComponent.paintChildren(JComponent.java:647) at javax.swing.JComponent.paint(JComponent.java:817) at javax.swing.JViewport.paint(JViewport.java:720) at javax.swing.JComponent.paintChildren(JComponent.java:647) at javax.swing.JComponent.paint(JComponent.java:817) at javax.swing.JComponent.paintChildren(JComponent.java:647) at javax.swing.JComponent.paint(JComponent.java:817) at javax.swing.JComponent.paintChildren(JComponent.java:647) at javax.swing.JComponent.paint(JComponent.java:817) at javax.swing.JLayeredPane.paint(JLayeredPane.java:557)
364 :
デフォルトの名無しさん :2008/09/15(月) 16:30:14
at javax.swing.JComponent.paintChildren(JComponent.java:647) at javax.swing.JComponent.paint(JComponent.java:817) at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:34) at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60) at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97) at java.awt.Container.paint(Container.java:1325) at sun.awt.RepaintArea.paint(RepaintArea.java:194) at apple.awt.ComponentModel.handleEvent(ComponentModel.java:258) at java.awt.Component.dispatchEventImpl(Component.java:3744) at java.awt.Container.dispatchEventImpl(Container.java:1671) at java.awt.Window.dispatchEventImpl(Window.java:1606) at java.awt.Component.dispatchEvent(Component.java:3543) at java.awt.EventQueue.dispatchEvent(EventQueue.java:480) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
365 :
デフォルトの名無しさん :2008/09/15(月) 16:32:28
apple.awt.EventQueueExceptionHandler Caught Throwable : java.lang.NullPointerException java.lang.NullPointerException at sam.ImageView.openFile(ImageView.java:24) at sam.Test.openImageFile(Test.java:75) at sam.Test.actionPerformed(Test.java:62) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1819) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1872) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258) at javax.swing.AbstractButton.doClick(AbstractButton.java:321) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1113) at java.awt.Component.dispatchEventImpl(Component.java:3681) at java.awt.Container.dispatchEventImpl(Container.java:1671) at java.awt.Component.dispatchEvent(Component.java:3543) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3527) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3242) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3172) at java.awt.Container.dispatchEventImpl(Container.java:1657) at java.awt.Window.dispatchEventImpl(Window.java:1606) at java.awt.Component.dispatchEvent(Component.java:3543) at java.awt.EventQueue.dispatchEvent(EventQueue.java:480) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:178) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:170) at java.awt.EventDispatchThread.run(EventDispatchThread.java:100) 凄く長いんですけど、どういう原因が考えられるのでしょうか? 長過ぎましたね、すいません 一部省略しました
HttpURLConnectionを使ったクライアント作成しています。 デフォルトではHTTP/1.1でリクエストされてしまうのですが HTTP/1.0でリクエストを出すにはどうすればよいのでしょう?
367 :
デフォルトの名無しさん :2008/09/15(月) 17:00:04
アパッチHTTPサーバーよりもシンプルな個人・自宅向けのサーバーないでしょうか?
>>361 toString()はObjectにあるので全てのオブジェクトに影響しますが、hashCode()とequals()の関係はどう考えればよいでしょうか?
>>361 答えはないということで同意。
ただ、リストの数が多くなる可能性があるものについては
使いづらくなってしまうので、基本は要素数を返すなどに
留めるべきだと思う。
中までみたければループなりイテレータで回せば済む話だし、
逆にそこまで情報いらないということになるとtoString()を
オーバーロードしないといけなくなるからね。
リスト要素数が数個に限定されるような動的に属性が変化する
オブジェクトの代用としてなら中まで含めるのもありかな。
371 :
363 :2008/09/15(月) 20:11:12
>>369 返信ありがとうございます
色々調べたのですがわかりません
動作に問題が無いのにエラーを起こすというのはどういうことでしょうか?
このままでOKという事は無いですよね...
>>356 そうなんですか、ありがとうございます。いろいろ調べてみます。
>>357 > どうみてもPOST先はlogin.jspじゃねーな
> ログイン画面のformタグをみてみろ
> パラメータの名前も一致していないし、その程度もわからないならば無理だろうね
POST先とパラメータの名前についてはわかります。
350の書き込みの時点ではなんとなく伏せました。
> ちなみに、一番簡単なのはログインするときのHttpRequestをキャプチャしてそれに合わせたリクエストを投げる事。
> ついでに言えば、下手したら不正アクセスで捕まるから注意した方がいいと思う。
ありがとうございます。そのようにしてみます。
>>362 自分のIDなら大丈夫そうですね。よかった。
>>361 自分ならは要素全部返すようにするなぁ たとえ8000文字になったとしても
何も考えずに、println(object)で簡単に一覧できるのが利点だと思ってる
ただ改行コードは入れないようにしてるかな
あとは関係ないけど、toXXXStringを別名で作ったり(ソートやら文字列長さ制限付とか、木構造なら前置、中置、後置でたどる
Eclipseを使い始めたのですがいったんプロジェクトを閉じて また開く方法がわかりません .javaファイル単体は開けるのですが
376 :
デフォルトの名無しさん :2008/09/15(月) 22:27:17
会社で使ってるOfficeソフトはもうたいてい2007なんですか?
すさまじいスレ違いの質問だ・・
>>375 ウィンドウ>パースペクティブ>Java参照
プロジェクトタブ(?)でそのプロジェクトみっけて右クリック
答えてみる ライセンス契約してるような大企業以外は2003かそれ以下がほとんど
Eclipseからプロジェクトをエクスプローラーで表示出来る方法ないですか?
381 :
375 :2008/09/15(月) 23:18:01
>>378 プロジェクトを閉じる にしてしまったら
プロジェクトタブ(?)のリストも空っぽで表示されないのですが
閉じ方間違ってますか
VC++使ってたのでこの感覚がどうもわかりません
向こうで聞いてきます
Servletの質問で恐縮です。 あるWebアプリケーションを作成しています。 ユーザー認証のためにログイン画面があります。 ログインの際に新規セッションを生成しメニュー画面をオープンし その他子画面を開きます。 そのあと新しいウィンドウを開き別のIDでログインすると 新規セッションが生成されるのですが、このセッションIDは クッキーに保存されるので前にログインして開いていた画面が 今回のセッションと共通になってしまいます。 これを回避する方法はないでしょうか?よろしくお願いします。
>>385 IEなら、別プロセスでブラウザを起動する。
新しいウィンドウやタブを開くのではなく、
デスクトップアイコンやスタートメニューから再度起動すればよい。
FirefoxやOpera、Chromeなど他のブラウザだとできないので、
同一マシンで複数セッション使いたいなら、セッションの数だけ
別のブラウザを実行する。
VMWareとか使う手もあるが。
Xcode(マック)でjavaを勉強してます テキストデータ(○○.txt)をBufferedReaderで読み込んだ後、 その文字列のユニコードを変更させたいのですが、できますか? (どんな型式のテキストファイルでもかならずUTF-8にしてから処理させ、 UTF-8で出力させる、というのが当面の目標です)
>>387 何でわざわざUTF-8にしたいか理解できないけど、可能。
BufferedReaderで読んだ時点でUTF-16のStringになっているから
String.getBytes("UTF-8")すればUTF-8のバイト列が取れる。
ユニコードを変更ってそういう意味か
勉強がてらにJavaのSNSでもイジッて使ってみようかと思ってたんだけど、 Java実装のSNSってないの?
Mac(10.5.4)上でeclipseを使ってSWTを利用したプログラムを書いています。
JVM 1.5.0, org.eclipse.swt.carbon.macosx_3.4.0.v3448f.jar, org.eclipse.swt_3.4.0.v3448f.jar
にパスを通し、
ttp://www.okisoft.co.jp/esc/swt/index.htmlのように 単純なウィンドウを表示するだけのプログラムをテスト用に書きました。
eclipse上では普通に動作するのですが、ExportからRunnable JAR Fileを作成し、
JARファイルから直接実行すると、ウィンドウが表示された後、プログラムがハングしてしまいます。
Mac機を一台しか持ち合わせていないので、一般的な症状なのかどうか分かりませんが、同様の症状の方はいらっしゃいませんでしょうか。
>>391 terminal から起動してみては如何でしょうか。
クラスhogehogeの変数xを、違うクラスからhogehoge.xと呼び出すときに String str = hogehoge; として str.xをhogehoge.xと同じ文になるようにしたいのですができません。 どなたかこれに近い方法をご存じですか?
型が違うんだから無理だろ。というか日本語でおk
>>394 やりたいことをもっと詳しく。
文章だけだけだと
hogehoge x = new hogehoge(...);
の前提のように読めるが、hogehoge.x とか書いてあって意図不明。
hogehogeはクラス名? 変数名?
xは何かのクラスのメンバー? static?
異なる処理 A と B が存在するとして、 ・処理 B が行われているとき、処理 A は行えない。 処理 A は、処理 B が終わり次第、順番に実行したい。 ・処理 A が行われているとき、処理 B は行えない。 処理 B は、処理 A が終わり次第、順番に実行したい。 ・処理 A 同士、処理 B 同士であれば同時に行える。 と言う制御をしたいのですが、java.util.concurrent パッケージあたりで単純に実現することはできないで しょうか。 1つの処理 = 1つのスレッドという前提で構わないの ですが… もちろん、concurrent パッケージに拘る理由は特に ありません。スレッドのロックや公平性をうまく利用 できないかなと思ったのみです。
すみません。妙な名前欄になっていますが、焼かれているプロキシ経由なためです。
単純にwaitとnotify系でいいんじゃないの? Conditionのがいいかも知れんけど。 複数同時の詳細が分からんけど、予想外の動きではないと仮定して。
>>396 Hogehoge1クラスの中にxという変数があって、
Hogehoge2クラスで
Hogehoge1 hogehoge = new Hogehoge();
とHogehoge1をオブジェクト化した後にクラス変数のxを
hogehoge.xとして呼び出す感じです。
何がやりたいかというと、hogehoge.xとそのまま書かずに
String str = "oge";として
hogehoge.x
↓
h + oge + hoge.x
↓
h + str + hoge.x
みたいな感じでstringで置換したいです。
hogehoge.xに限ったことではなく、例えば
System.out.println();を
String str = "Sys";として
str + tem.out.println();
みたいな使い方です。stringはこんな使い方は出来ないのでしょうか…
java リフレクション でぐぐれ
>>400 名前でオブジェクトを特定してアクセスってことならリフレクションだが。
そんな妙ちくりんなことして何の得になるんだ?
名前とオブジェクトを関連付けするならMapで充分だろに。
そんな変態的な事しても何の利点もないがプリプロセッサ拾ってきてマクロ定義してやれば良い。
>>402 必要になることはあるでしょ
>>400 にとって必要かといえば、たぶんアプローチが間違ってるんだろうけどね
>>399 ありがとうございます。やはり無理矢理持ち出しても
どつぼなだけですかね。考えてみます。
複数同時の詳細、ですが、処理AがA1,A2,A3とあり同時、
もしくは処理BがB1,B2,B3同時といったように動くのは構わないが、
A1とB1、といった状態は不可、と言うことを実現する必要があったと言うものです。
>>400 Mapを使えば似たようなことはできるけど、できないと考えていたほうが
良いと思う。
クラス名とか変数名ってのは人間がソースを読むときのために便宜上付
いているだけであって、それをプログラム実行時にどうにかしようとい
う発想はあまりしないのです。
>>397 標準のAPIにはそのものズバリはなさそうなので、
モニターで確実なものを作ってそれからいろいろと工夫をするのがいいと思いますよ。
動作確認はしてないがこんな感じで作れる。
class ABlock {
private int cntrA = 0; private int cntrB = 0;
public synchronized void enterA() {
while (cntrB != 0) { try { wait(); } catch (InterruptedException e) {} }
cntrA++; }
public synchronized void leaveA() {
if (cntrA > 0) cntrA--;
notifyAll(); }
public synchronized void enterB() {
while (cntrA != 0) { try { wait(); } catch (InterruptedException e) {} }
cntrB++; }
public synchronized void leaveB() {
if (cntrB > 0) cntrB--;
notifyAll(); }
}
>>401-404 ありがとうございます。調べてみます。
具体的にはパネル上に碁盤の目状にオブジェクトを配置して、
マウスでクリックしたところにあるオブジェクトを返したかったんですが、
やり方がわからなかったので、オブジェクトと一緒にクラス名をStringでパネル上に配置して、
クリックした場所のStringを返す→Stringを使ってオブジェクトを返すという考えでした。
具体的なコードがわからないからはっきり示せないけど、いくらでもほかのやり方はあるよ リフレクションはあくまで最終手段で、本当にちゃんと理解してる人がやること
どの言語でもリフレクションは最終手段
411 :
391 :2008/09/17(水) 12:59:14
>>392 どうもありがとうございます。
起動自体は普通にするので、起動せずエラーを吐く、といったわけでは無いのですよね。
デバッグ(IDE上の実行とか)で再現せず、JAR化した時のみハングするので……。
JARの中身をあれこれ弄ってはいるものの、難しいですね。
>>405 Aの実行中にBが来たらBは待つ。
そこにさらにA2がきたら?
{ Bより先に即実行 or Bあとに実行 }
ここが要件不明。
前者がいいなら、トークン持ちのキューが2つある構造。
トークンは、キューが空になったときに移動する。
後者でいいなら、並列動作は常にさせないのが分かりやすい。
同時処理させても限定的な効果になるから。
>>408 >
>>401-404 > ありがとうございます。調べてみます。
リフレクションを使うほどのものじゃないですね。
調べるのは時間の無駄かと…。
> 具体的にはパネル上に碁盤の目状にオブジェクトを配置して、
> マウスでクリックしたところにあるオブジェクトを返したかったんですが、
> やり方がわからなかったので、オブジェクトと一緒にクラス名をStringでパネル上に配置して、
> クリックした場所のStringを返す→Stringを使ってオブジェクトを返すという考えでした。
パネルに置くオブジェクトをボタン(あるいは、その子孫クラス)にして
アクションリスナーで、オブジェクトを返すとかで十分な気がします。
414 :
aa :2008/09/17(水) 14:22:57
Javaのガーベッジコレクタが遅いらしく、何にもしていない場所で止まった ようになり困っています。 ガーベッジコレクタを高速にする方法や、勝手にガーベッジコレクタが 動作しないようにする方法は有りますか?
できるだけオブジェクトを作りまくって放置したりしないように気をつける 暇なときにSystem.gc()
A1とB1とかの組み合わせが複数あるだけでそれぞれは独立してるの? 例えば処理対象のデータを次々にA→Bという処理の流れに渡すのか、 あるいはいくつかの固定データに対してA→B処理をひたすら同時に繰り返すのか、 いまいちやりたいことが分からないんだ…
>>414 とんでもないメモリの使い方したりしてないか確認するんだ
418 :
aa :2008/09/17(水) 14:36:10
ちなみにJavaアプレットなので、java -noasyncgc によって
非同期ガベージコレクタを無効にすることも出来ません。
>>417 ログを処理しているのですが、大量のログを入力した直後に
停止状態になります。
>>418 念のため訊くけど、無限ループってオチじゃないよね?
あと、ゲームなんかだと、GCが起きないように、
最初に必要なメモリを全部確保しておいて
ゲームの途中ではメモリの確保&解放は
しないようにしたりする。
420 :
aa :2008/09/17(水) 14:53:42
>>419 無限ループではありません。ちゃんと待っていると動作が続行します。
421 :
aa :2008/09/17(水) 14:55:43
import java.lang.management.GarbageCollectorMXBean; import java.lang.management.ManagementFactory; import java.util.List; として、 GarbageCollectorMXBean と ManagementFactory で ガベージコレクタをコントロールできるらしいです。 そっちを調べてみます。
コントロールしてどうしたいの? 本当にガベージコレクタが原因なんだとしたら大量のゴミが出てるのは確かなんだから 効率的な処理の仕方とかを考えないとしょうがないんじゃないの?
423 :
aa :2008/09/17(水) 15:05:37
プロファイラでオブジェクトの数とか消費メモリとか見れば?
>>424 に1票
原因は10中ハック、GCではなくて単なるプログラムミスだろ
426 :
aa :2008/09/17(水) 18:47:27
>>424 JavaAppletでプロファイル見られますか?
427 :
aa :2008/09/17(水) 19:22:39
調べてみると、遅くなる前後で、GC起動数もクラスロード数も変化してま せんでした。 if(){}else{}文の最後の中括弧を出るタイミングや、、 あるいは、今回の調査用に呼び出した関数内部のSystem.out.printf()文 とSystem.out.printf()文の間で停止したりします。 どこで停止するかはまちまちで、停止時間は10秒以上だと思います。 停止後、何事もなかったように動作を再開し、プログラムの実行結果自体は 至って正常です。
GC関係ないって分かってボトルネックがどこにあるのか分からないならメトリクスとればいい。
429 :
aa :2008/09/17(水) 21:28:11
>>428 「ボトルネック」というのが「処理速度が遅い部分」という意味だとすれば、
今回の場合はそれとは違うと思います。
今回は、複数のSystem.out.println()の間の何も書かれてないような位置や、
中括弧の直後の何も書かれていない位置で停止する現象が起きてます。
>>366 は自分でソケット開くしか対策なしでしょうか?
FutureTask#cancel(boolean mayInterruptIfRunning) って、 true を指定して止めようとする場合の 内部ステートの変更とスレッドのインタラプトが同一の排他処理内に入っていないので、 これを実行するバックグラウンドスレッドが複数の FutureTask を連続的に実行する場合、 ロジック的には、次のタスクの実行中にスレッドをインタラプトする可能性があるんじゃない? 実際にソースをコピペして、インタラプトする前に適当に Thread.sleep する文を挿入したら その通りになったんだけど、これってロジック的にはバグじゃね? それとも、cancel(boolean) は true を指定できるのは非常に限定された場合だけなのかな?
432 :
デフォルトの名無しさん :2008/09/18(木) 05:18:10
Swingでランチャを作りたいのですが、本やネットで調べてもやり方が分かりません。 ボタンをクリックしたら、ソフトを起動できるようにしたいのです。 よく public void actionPerformed(java.awt.event.ActionEvent e) { System.out.println("actionPerformed()"); というのを見かけます。 この後ろに起動したいソフトに関する記述をすればいいのかと思うのですが、違うでしょうか。 もし、それでいいとすればどう記述すればいいのでしょうか。 Windowsの場合とLinuxの場合、それぞれの記述の仕方を教えていただけると助かります。
>>431 理解できないならば喋るなと言われそうですが,,,,,,
本来はどうあるべきなのでしょう。
trueを指定して割り込みを望む以上、どんな状態で割り込みが行われたとしても
想定の範囲内ではないのでしょうか。
そも、割り込みが完了する直前状態は、「動作中のタスクがcancel対象以外」であるのが当たり前では?
>>431 >それとも、cancel(boolean) は true を指定できるのは非常に限定された場合だけなのかな?
ソス見てないが、Thread.interrupt を実行してるなら FutureTask が個々に1個のスレッドの場合だけだろうな。
質問です。 入力された日付の一日前の日付を取得したいのですが、サンプル等ありますでしょうか。 ちなみに入力された日付は文字列型です。(例:2008-09-18)
>>435 APIドキュメント内を探してみたか?
DateFotmat, Date, Calender(GregorianCalendar)
使えそうなのいろいろあるぞ
javaでゲームを作っています。 KeyEventでボタンを押しっぱなしにしているとき物体が動き、離すと止まるようにしたいのですが、 keyPressedでボタンが押されたとき座標をずらすようにすると、物体の動きが変になってしまいます。 具体的には最初遅く動いて、しばらくすると一定の速度で早く動きます。 今はボタンを一度押すと動き、もう一度押すと止まるという形にしていますがとてもやりにくいです。 どなたか解決方法を簿存じないでしょうか?
>>437 > 具体的には最初遅く動いて、しばらくすると一定の速度で早く動きます。
物体が動きだすときに、なんらかのオブジェクトを生成(new)してませんか?
ゲームの場合、各ステージ(?)の最初に必要なオブジェクトをすべて生成してしまい、
プレイ中にはオブジェクトの生成を一切しないようにしたほうがいいです。
> 今はボタンを一度押すと動き、もう一度押すと止まるという形にしていますがとてもやりにくいです。
keyReleasedで止まるようにする。
ありがとうございます! keyReleasedを使ったらうまくいきました。 今までkeyPressedしかつかってなかったので目から鱗です;;
>>432 ProcessBuilderでも使ったら?
数値配列の要素1つずつをファイルに保存するのは低速そうなので、 数値配列を丸ごとファイルに保存しようと考えています。 FileOutputStreamとObjectOutputStreamを使えば、 writeObujectで配列を書き込めるのはわかったのですが、 ObjectOutputStreamにはランダムアクセス機能がないので あまり使いたくありません。 しかし、RandomAccessFileにはwriteObujectがないのです。 このような場合、どうしたらよいでしょうか。
何でランダムアクセスできる必要があるの? まぁファイルがソースなんだから、 FileInputStream#getChannel().position(long l) とか使えばいんじゃね?
writeObjectは遅いよ
>>441 想像で決めずにまず一番簡単な方法で書いてみろ。
で時間を測って、気に入らなかったら高速化を考えろ。
了解しました。 ただ、int[] aのようなaを指定するだけで、 要素が丸ごと書き込む方法があるかは知りたいんです。 aをbyte[]に変換できたらいけそうなんですが。
446 :
432 :2008/09/18(木) 22:23:50
>>440 どうもありがとうございます。
ProcessBuilderは知らなかったので、調べてみると便利らしいですね。
ググって使い方を調べてみます。
447 :
デフォルトの名無しさん :2008/09/18(木) 22:25:17
swingについての質問です。 JFrameを継承してウィンドウを生成した時に、 タイトルバーに最小化/最大化/終了ボタンが付きますが、 最小化/最大化のボタンだけ非表示したいです。 調べた結果JDialogを継承したウィンドウだと 上記が実現できるのですが、今度はWindowsのタスクバーに タスクが表示されなくて困っています。 タイトルバーの最大化/最小化ボタンを非表示にして、 なおかつタスクバーにタスクを表示させるには どうすればよいでしょうか?
>>445 New I/O。java.nio.Buffer とそのサブクラス群、等。
>>447 恐らく見当違いだと思いますが、以下のことが出来ます。
サイズ変更不可に -- Frame.setResizable(boolean)
タイトルバーを非表示に -- Frame.setUndecorated(boolean)
JSPのコンパイルエラーで、こんなんが出ています。 1画面の入力項目が多い為、jsp:includeで分割しても変わりませんでした。 post形式ですが一度に送れるrequestの容量に制限があるのでしょうか? 回避方法はあるのでしょうか? javax.servlet.ServletException: コンパイル問題が未解決です。 メソッド _jspService(HttpServletRequest, HttpServletResponse) のコードが 65535 バイトの制限を超えています。
>>450 1つのメソッドの大きさは65535バイトまで。
classファイルフォーマットの仕様上の制約。
たしか例外ハンドラの開始位置とかが 符号なし2バイト整数だったような。
>コードが 65535 バイトの制限を超えています。 知ってたが初めて見るコンパイルエラーだw ほんとに超える奴なんていたのか。
String型変数に格納されている文字列に、日本語が含まれているかどうかを 確認したいのですが、何か良い方法はあるでしょうか。 最終的な目的は、日本語名のファイルを扱わないようにすることです。
日本語だけなのか? 中国語やハングルは含まれていても問題ないと?
使えない文字を考えるよりも、使える文字を決めてそれ以外は不可とした方がいいんじゃない ファイル名だったらこんな感じか? if (filename.matches("[0-9A-Za-z .!#$%&'(),-.;=@\\[\\]^_{}~]+")) { // OK } else { // NG }
>>455 失礼しました。
中国語やハングルも含みます。
>>456 なるほど。ありがとうございます。
java1.4から1.6に環境を変える場合、単純にコンパイルできれば移行は問題なしと考えてよろしいでしょうか? つまりバージョンアップする場合、廃止されたクラスやメソッドを使用していなければ問題なく同じ動作になると言えるでしょうか?
>>458 はい。それぐらいの話で良ければ問題ありません。
>>458 ありがとうございます。
逆に後々問題になりそうな盲点なポイントはあるでしょうか。
適当な画像に対し、特定のピクセル(画像の一番左上とか) と同じ色のピクセル座標のみを列挙するプログラムを作成しています。 現在は画像の幅と高さ分だけforをグルグル回しながら、BufferedImage.getRGBで 一個一個ひたすらチェックしているのですが、どうにも時間がかかってしまいます。 Java標準APIの範囲で、このような作業をより高速に出来る手法はあるでしょうか。
一度のgetRGBで全部のピクセルを取得して 幅と高さのforをぐるぐる回ると少しマシかも
Swingでマルチウィンドウなプログラムを作っているのですが、 一つのウィンドウを動かした場合に、他のウィンドウも同じだけ動くようにしたいと考えています。 単にイベント中でウィンドウ移動の処理をするとスレッド例外が発生してしまいますが、 どのようなイベント、或いはスレッドを作って処理するのがよいのでしょう
まずは問題を切り分けてSwing EDT マルチスレッドあたりでググレば良いよ
465 :
463 :2008/09/20(土) 08:42:38
>>464 お恥ずかしながら、移動させるために拾うウィンドウのオブジェクトが初期化される前に拾っていました。
どうもありがとうございます。
こんにちわ。早速ですが、javaアプレットとサーバープログラムの通信に関して質問です。
サーバー上にjavaアプレットとサーバープログラムを置き、
サーバープログラムを実行させた状態で、javaアプレットにアクセスすると、
javaアプレットとサーバープログラム間で通信ができるというものを作りました。
しかし、サーバーパソコン上から
http://localhost/ で
javaアプレットにアクセスした場合はうまく通信できるのですが、
外部のパソコンから
http:// (サーバーのグローバールIP)/ で
アクセスした場合は接続失敗になってしまいます。
どうすれば外部からアクセスした場合でもきちんと通信できるようになるのでしょうか。
なお、通信する際に使うサーバー側のポートは開放しております。
HTTPサーバーはAN HTTPDを使っています。
───アプレット側のサーバーへの接続コード───
serverName = getCodeBase().getHost();
usocket = new Socket(serverName, portNo);
───サーバー側の接続待ちコード───
ServerSocket serversocket = new ServerSocket(portNo);
Socket usocket = serversocket.accept();
アプレットってロード元ならHTTPでなくても繋げるんだっけ? それは繋げるとして、単にファイアウォールとかプロキシってことはないのか?
複数のスレッドがwait状態にある時に ある特定のスレッドだけ再開することって出来ますか。
モニターを使う前提なら異なるスレッドごとに異なるSyncオブジェクトを用意する。 別の方法としてはnotifytAllで全部たたき起こして、 条件に合わないスレッドは再びwaitに戻すといった方法もわりとよくやる。 インタラプトで個別に起こすのは一応最後の手段かな。
>>469 スレッドごとに別々のオブジェクトでwaitし
特定のオブジェクトをnotifyしたら
そのオブジェクトで待機してたスレッドが動きました。
ありがとうございました。
471 :
デフォルトの名無しさん :2008/09/20(土) 15:40:59
>>461 スレッド使えばなまじのCより早くなるだろ
意味が分からない
473 :
デフォルトの名無しさん :2008/09/20(土) 16:04:12
JavaアプレットのスクリプトをWebサーバに置く代わり、クライアント上に置いて実行したいのですが、 クライアントでWebサーバの代わりとなってJavaアプレットを実行する方法はありますでしょうか? Tomcatはサーブレットのほかに、アプレットも動作可能でしょうか? もし動作できない場合、Tomcatでサーブレットからアプレットを起動するような方法で実行できますでしょうか?
スレッドについてもう一つ質問させてくださいm(__)m AというクラスがBというスレッドを、waitしたりnotifyしたりするのですが、 notifyせずにAというクラスがどこからも参照されなくなると Bというスレッドは永遠とwaitしっぱなしになると思います。 Aというクラスで必ずBをnotifyして、Bのスレッドの処理完了すべきですが、 上記のようにwaitしっぱなしでAが参照されなくなるケースがある場合に、 Bのスレッドを終了させる方法ってありますでしょうか。 思いついたのは、 1.Aというクラスにファイナライズのメソッドをオーバーライドし、 Bのスレッドをnotifyするという方法 2.Bのスレッドを定期的にnotifyし、Bがどこからも参照されなくなっていたら終了するという方法 そこで、2.の方法は実現可能なのでしょうか・・ それとも他に良い方法ありましたら教えてください
Eclipceプラットフォーム上でjavaをコーディングしています。 実行中に例外が発生してなんたらExeptionが出たときに、 追加でコンソールに表示される at パッケージ.クラス.メソッド(+数値) の部分の+以降の数値の見方が分かりません。 どなたか教えていただけると助かります。
setter、getterだけのクラスって良くありますよね。 フィールド数として適切な数はどれぐらいだと思いますか?
478 :
431 :2008/09/20(土) 19:14:25
479 :
デフォルトの名無しさん :2008/09/20(土) 20:24:03
JAVAからoracleのselect文を発行する際、to_date()の第二引数(書式)を小文字で 書くのは間違いでしょうか? (例)to_date(DATE型カラム, 'yyyy-m-dd hh24:mi:ss'); 一応、日付は正しく取得されるのですが・・・ いろいろな本やHPでは、大文字で説明が載っています。 (もし、間違いならなぜ間違っているのか知っていれば教えて下さい。)
javaの質問じゃなくてOracleの質問でしょ、それ
481 :
デフォルトの名無しさん :2008/09/20(土) 22:01:57
なるほど。そうですよね、そちらへ聞いてみます。 ありがとうございます。
作成したorg.w3c.dom.Documentを、 以下のようにして文字列に変換しようとしたのですが、 ByteArrayOutputStream os = new ByteArrayOutputStream(); ((PrintStream) document).print(baos); String Data = os.toString(); ((PrintStream) document).print(baos); のところで、 org.apache.xerces.dom.DeferredDocumentImpl cannot be cast to java.io.PrintStream というエラーが吐かれてしまいます。 何かいい対処法はありますでしょうか?
483 :
482 :2008/09/20(土) 22:21:23
すいません、一部間違えました × ((PrintStream) document).print(baos); ↓ ○ ((PrintStream) document).print(os); 失礼しました
いやいや、Documentは明らかにPrintStreamのサブクラスじゃないでしょw castの意味分かってるのかな?
485 :
デフォルトの名無しさん :2008/09/21(日) 02:19:03
他言語経験者のJava歴2週間です。 非常にくだらない話なんですが、Integerの使い道が分かりません。 intではダメなのでしょうか?計算もできないようですし・・・
mysqlを用いたプログラムで、 Statement st; String sql="select * from database"; // ResultSet rs=st.executeQuery(sql); これで取り出された値のうちランダムな一つを使いたいため、 取り出された総数を知りたいのですが、 rs.next()がnullになるまでループさせる以外に方法ってあるでしょうか?
>>485 使い道が分からないうちは気にしなくて大丈夫です。
必要だから使う程度です。
>>486 最後の行に移動して行番号を取ればいいんでないかい。
>>474 触れてないようなので
Daemon, ShutdownHook
>>485 コレクションの要素に整数を入れることを考えてみよう。
>>486 すなおに SELECT COUNT(*) FROM database; を使ったほうがいい。
あとランダムに1つ選ぶのに * で全部取得だと効率悪いから、主キーをなんとか
ランダムに生成して1件取得するようにすべき。
492 :
デフォルトの名無しさん :2008/09/21(日) 07:30:36
複数のTextAreaを持つフォームを作り、 コピーとペーストを実装させたいのですが、 そのプログラムが一つのTextAreaの場合はネットで検索して 見つけたんですが、それを複数の名前の異なるTextAreaに応用する方法がわかりません。 StringSelection strSel = new StringSelection(textArea.getSelectedText()); のtextAreaの部分を自動的に選択したTextAreaにする方法を教えてください。
interface MyIn { class MyCl {} } とすると、内部クラスはインターフェイスの規約どおり必ずpublic static final class MyCl として扱われるんですか?
>>493 暗黙的に public と static はつくけど final はつかんかったような。
あと、規約通りじゃない場合ってコンパイラのバグとかを想定してるって事?
ありがとうございます。規約のところは定数はfinalだったという程度のことです。 そういえば、実験してそんな感じがしてたんですけどstaticもつくんですか。
次プロジェクトで突如JAVAを使うことになりました。 基本的な部分は理解できましたが、その次のステップにすすめません。 実際に何かを作るのがいいとおもいますが、参考になるようなもの (サンプルPG、練習問題のあるサイト)がありましたら教えてください。
サーバサイド?デスクトップ?
>>497 早速のレスありがとうございます。
デスクトップがメインですが、サーバサイドも必要です。
割合でいうと15%程度ですので、後回しでも結構ですl
499 :
デフォルトの名無しさん :2008/09/21(日) 09:42:54
データベース表INTEGER型のカラムPIYOに対して、 int foo = 777; hogeDataPrvider.setValue("PIYO",new Integer(foo)); とすると「INTEGER型に対してストリング型は無効です」のようなエラーが返ってきます。 で hogeDataPrvider.setValue("PIYO",777); とするとエラーになりません。 どなたか、なぜこうなるか教えて下さい。
エラーの文句を100回読んだら良いと思うよ
501 :
デフォルトの名無しさん :2008/09/21(日) 11:47:18
すみません、チュートリアルの通りやっているつもりなのですが…。 IntegerというのはStringではないと思うのですが。
502 :
デフォルトの名無しさん :2008/09/21(日) 11:53:31
>501 INTEGER型はDBのカラムの型 ストリング型はJavaの型 「のようなエラー」じゃなくて、エラーはちゃんと読めよ
てst
504 :
デフォルトの名無しさん :2008/09/21(日) 12:02:50
すみません。 チュートリアルの例ではDBのInteger型に対してちゃんとjavaのInteger型を突っ込んでると思うのです。 だから僕がやってうまくいかないのはコード以外の部分に問題があるのかなと思ったのです。
505 :
デフォルトの名無しさん :2008/09/21(日) 12:28:27
newがstring型と判定された?fooを直接渡してはだめなんですか
506 :
デフォルトの名無しさん :2008/09/21(日) 12:42:37
>>505 ダメでした。
数字をハードコーティングしない限り作動しません。
int foo = 500; hogeDataPrvider.setValue("PIYO",foo );
508 :
デフォルトの名無しさん :2008/09/21(日) 12:53:28
fooはint型なのにstringと解釈されたってこと?setValueって値しか渡せないってことですかね
509 :
デフォルトの名無しさん :2008/09/21(日) 12:54:36
Stringを別のStringに代入する方法ってないですか? C言語ではstrcpyの関数を使いますが…
>>510 String a = new String(b);
String a = b;
でいいだろ
>>499 どこのチュートリアルか示せ
514 :
デフォルトの名無しさん :2008/09/21(日) 13:28:21
変数fooを宣言してるのにfooをセットできないのは例として変です
515 :
デフォルトの名無しさん :2008/09/21(日) 14:02:52
516 :
デフォルトの名無しさん :2008/09/21(日) 14:44:27
>>513 「String a = new String(b); 」と「String a = b;」は一緒じゃないじゃん。
517 :
デフォルトの名無しさん :2008/09/21(日) 15:57:33
皆さん、こんな風に原因のゲの字も分からない場合、どうされているのですか? もうそちらの方が知りたいです。
518 :
デフォルトの名無しさん :2008/09/21(日) 16:03:19
お助けください。 linux に tomcat5.5 をインストールしてみました。 元々入っているサーブレットのサンプルアプリ(servlets-examples)を 一部修正してアップロード→リロードすると修正内容が反映されて動作します。 ただ、標準出力/標準エラーがどこにも出力されません。 catalina.xxxx.log 系に出ると思っていたのですが何が悪いのでしょうか? わざと例外が発生するソースにして動作させると、 スタックトレースが出力される tomcat の 500エラー画面が表示され、 「注意 原因のすべてのスタックトレースは、Apache Tomcat/5.5のログに記録されています」 と、メッセージが出るのですけど logs フォルダ配下を grep しても出力されていません。
>>516 Stringを別のStringに代入にはなっているだろ
520 :
デフォルトの名無しさん :2008/09/21(日) 16:20:20
別の方法で実装する事にすると、今度はその"別の方法"と組み合わさる"別の何か"がこれまた立ちふさがって、結局いつも出来ないか間に合わないのです。
>>518 CATALINA_HOME/logs/catalina.outに出力されてないか?
>>519 String a=b;は aがbを参照してるだけじゃん
わかった、わかった Stringを別のStringに代入する方法なんてないでOK?
細かいことは気にせずどんどん組め
aがbを参照してるw
526 :
518 :2008/09/21(日) 16:38:58
>>521 出力されてませんのです。
なんとなくtomatの設定じゃなくって権限がらみぽいですね。
>>526 Tomcatはどうやってインストールして、どんな風に実行している?
Fontクラスでフォントサイズをピクセル単位で指定したオブジェクトを得たいのですが、やり方ありますか? 教えてください
無理。 getFontMetricsから取得は可能。
530 :
518 :2008/09/21(日) 17:05:54
>>527 か、解決しました(;´Д`)
インストールは sudo apt-get install tomcat5.5 で
実行は 初回rootで次からはtomcat用のユーザでしてました。
結局のところ CATELINA_HOME/logs のリンク先のオーナーが root になってました。
java と関係なくてすんまそん。
色々ありがとうございました。
>>523 意味がわからん。
1) String型の変数に何らかのStringオブジェクトのリファレンスを代入すること
はできる。
2) mutableなオブジェクトに含まれる非finalなインスタンス変数に、同型である
別のオブジェクトのインスタンス変数をコピーすることはできる。しかし、String
オブジェクトはimmutableなので、Stringオブジェクト内部のインスタンス変数を
別のStringオブジェクトのインスタンス変数にコピーすることはできない。
3) ただし、既存のStringオブジェクトから別の実体を持つStringオブジェクトを
新規に生成することはできる。(Stringはimmutableなので、同一の値を持つ別の
実体をあえて生成することに意味があるとは思えないが)
>>532 早速やってみます
レスありがとうございました。
534 :
デフォルトの名無しさん :2008/09/21(日) 18:56:21
>>513 513は「String a = b;」では、新しく文字列が生成されない事が分からないのでは。
新しい文字列を生成する必要あるか?
strcpy()の動作だとString s = new String(hoge)じゃないのか? あんまり意味ないけど
質問者は単に別の変数に、ある変数で参照している文字列と同じ文字列を参照させたいだけかと
CとJavaで文字列の常識が違う事をすっ飛ばして勢いでレスしてもな。
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); とかありますけど、こういう"terminateEditOnFocusLost"というような指定可能な文字列は、 どういった経緯で知ることができるのでしょうか。 指定可能なプロパティを列挙できるメソッドなどが用意されているのでしょうか。 そもそも、クライアントプロパティというのが何なのかよくわかりません。
知ることが可能もなにも作った奴が決める文字列 それがライブラリならマニュアル嫁って話
541 :
デフォルトの名無しさん :2008/09/21(日) 23:04:47
542 :
デフォルトの名無しさん :2008/09/21(日) 23:06:41
↑スマン ヘンなことした
>>499 エラーをそのまま書いてよ。
みんな親切に想像してレスしてくれてるけど
その想像の段階で勘違いってこともよくあるし、
エラーの中で自分でここが重要だって思っててもそれが思い込みで
見る人が見ればもっと別な所が重要ってこともよくあるし。
>>542 だからま、エラーメッセージはコピペしろ、と
素のメッセージをWeb検索するだけで答えが見つかることもあるし。
脳内変換はその後でも遅くは無い。
SwingでGUIアプリを作りたいんですが いざ作り始めると美しくないソースになってしまいます 今考えているのは以下の二つの方法なのですが 実際GUI開発されている方はどういった設計でGUIアプリを 開発されてますか? 1.メインウィンドウクラスはstaticなコンポーネント 満載で、イベントクラスからは直接処理結果を返す こんな感じ MainWindow.label.setText("結果"); 2.メインウィンドウクラスはシングルトンで毎回取得 取得して、セッターゲッターを必要に応じて作って 処理結果を返す こんな感じ MainWindow.getInstance().setRet1("結果"); 何となく1の手法はせっかくのgcをうまく生かせてないみたいで 嫌いなのですが・・・ 何かメジャーな開発手法があれば教えてください。
スレッドの事もあるし、その二つで言えば2だろうね。 けどシングルトンもだめって確かSwing Application Frameworkの中の人が批判してたね。
そもそもメインウィンドウ=アプリケーションクラスとかSwingの構築をEDT上でやってないとか言うオチじゃないだろうな。
JSR 295-296 を使えばプロパティのバインディングも使えるようになるし、リソース管理とかライフサイクルもフレームワークに任せられるようになる。 試したいならばNetbeansである程度出来るから、やってみると面白い
548 :
544 :2008/09/22(月) 00:55:03
>>545-547 ありがとう、いろいろ勉強不足な事に気付きました。
EDTなんてのがあったんですね。
frameをsetvisible(true);した瞬間に別スレになるのかー
毎度別スレッドからになってた。
やっぱGUIはめんどくさい
549 :
デフォルトの名無しさん :2008/09/22(月) 07:47:38
>>499 です。
その後、皆様のご回答をもとにいろいろやった結果、実はカラムPIYO(主キー
にしていた)に対するエラーではなく、他のINTEGER型のカラムに対するエラー
である事がわかりました。
そのカラムはNULLを許容させていたので、検証の時もそのカラムにバインドし
ている入力領域であるtextFieldには何も値を入れず、当然にNULLを代入させてい
たつもりだったのですがそれが良くなかったようです。
550 :
デフォルトの名無しさん :2008/09/22(月) 07:48:45
情けないです。 ちなみにエラーメッセージは システムメッセージ Error :Number of conflicts while synchronizing: 1 SyncResolver.INSERT_ROW_CONFLICT row 6 型 INTEGER に対して無効な 文字ストリング・フォーマットです。 でした。
551 :
デフォルトの名無しさん :2008/09/22(月) 07:54:22
解決への道程が全く推測できない状況の中で手当たりに試行錯誤していくうち、
テーブルの稼動を検証するため、何度かじかにクエリーを実行した事があり、その
時のINSERTの結果とコードにリテラルを突っ込んで試した時の結果を取り違えてし
まった事が悔やまれますとともに、答えのない質問をばら撒くという過ちを犯した
事をお詫びします。
>>543 はじめ皆様すみませんでした。
このNULLを許容しているカラムには、状況によってNULLを入れる必要がある為、
その時に入力領域とどう連動させるかという問題が残るのですが、それはまた今度
考える事にします。
全く何なんでしょうね、俺。ほんとすみません。
jaxm-1.1で検索すれ
JAXPが出て公式の配布は終わった奴だっけ?
555 :
552 :2008/09/22(月) 14:24:27
>>553 ありがとうございます。探してみます。
>>554 やはり公式ではもう配布していないのですねorz
ありがとうございます。
zipは特許大丈夫か確認したの?とくに暗号化とか。
558 :
デフォルトの名無しさん :2008/09/22(月) 19:15:25
プログラミングは初めてなんですが、Javaからはじめても大丈夫でしょうか? パソコンの知識はかなりあります。軽くPHPをいじったことも。
大丈夫じゃね? Rubyだろうがなんだろうが、興味持ったのやるのが一番
最近はプログラミングをしたことがなくても パソコンの知識はかなりありますって言えるのか・・・ 世も末だな
時代は変わったのさ。 COBOL以外ならなんでもいいじゃん。
>506 パソコンの知識とプログラミングの知識はまったく別だろ、少なくとも現代では。 LANの設定とかコマンドプロンプトの扱いとか、それすら出来ない奴がマの新人として雇用されるわけだ、それよか幾分もマシ
俺がPC-8001を手に入れたころはプログラムを組まないと 何もできなかった。むしろプログラムを組むことだけが目的であった。
うんそうだったね…
パソコン(家電)なんてネットが目的だろ パーソナルコンピュータの時代は終わっていると気づけ
566 :
デフォルトの名無しさん :2008/09/22(月) 20:04:17
>>558 Javaは文法的にもCの発展版なのでCからやるといいですよ。特にポインタは難しいですけど、これを極めておくと他の言語でも応用が利きます。
だけど仕事でC使うなんてめったになくない? 個人的にC言語は何でもできるけど一番難しいと思っているよ。
Javaでいいか聞いてるんだから「Javaでいい」で終了 Java vs Cは他のスレでやれ
所詮、趣味プログラムとかなんでしょ? 今更Cなんて化石を触らすのは百害あって一利なしだよ 最初からJavaで良いと思う
やりたいのをやれ、でいいだろ。 Javaスレに来て、Cがいいですか?とか聞いているんじゃないわけだし
571 :
デフォルトの名無しさん :2008/09/22(月) 22:22:09
化石かどうかというならJavaももう古参だろ。 それならJavaみたいな静的型に頼るよりもやっぱりsclaraとかjavascript,rubyじゃないの?
まあ、javaもcも難しいからな。vbaにしとけw
>>571 なんでJavaよりsclaraとかjavascript,rubyが良いの?
他 所 で や れ
575 :
デフォルトの名無しさん :2008/09/22(月) 22:35:38
動的型言語だからに決まってんでしょ。日本語も理解できないカスw
初めて言語学ぶのに 静的言語より動的言語を選ぶもまえの考えが聞きたかったのだが・・ まぁいっか
パソコンの知識=ねとらんな時代だからなぁ
すくらら?
579 :
デフォルトの名無しさん :2008/09/22(月) 22:52:26
>>576 おまえはプログラム言語を使って誰もが驚くようなアプリを作ってるのか?
どうせCではポインタで挫折するし、Javaは型を気にしながらやらなければならないから、 お気軽な動的言語でいいんじゃないの。
581 :
デフォルトの名無しさん :2008/09/22(月) 23:09:54
質問です。 Javaで趣味程度にプログラムを作っているのですが、最近ちょっと疑問に思うことが。 MMOのサーバーはどんな設計になっていて、それはJavaでも可能なのでしょうか。 マウスをドラッゲして移動したキャラクタの座標をを、画面にいるユーザー全員に送信するなど 考えただけでも処理が大変そうで。Java.nioで並列処理をするとかで行けるものなのでしょうか?
規模次第かと思うけど、向かないだろうな。 第一にグラフィックは2Dくらいならともかく3Dはハード性能を引き出せないから限界がある 通信周りとかも暗号化したり速度を出そうとすると標準的なライブラリじゃ無理がある まあ、数百人が遊ぶ程度でチートとかやろうと思えば可能って割り切れば作れないことはないだろうね
サーバでそ? グラフィック関係ないじゃ・・・
サーバ側はJavaの方が向いている場合もあるんじゃね? どんだけ並行処理できるかが勝負な気がする。
>>581 普通のいわゆるWebアプリのサーバは知ってますか?
MMOの設計を知ってるわけじゃないけど、あんまり大差ないと思いますよ。
基本的には要求が来るまで待ってて
要求に従っサーバのデータを書き換えたり、情報を送り返してるだけだと思う
TCPがUDPになってるとかはあるだろうけど
586 :
デフォルトの名無しさん :2008/09/22(月) 23:40:08
scalaなんてすぐ滅亡するから眼中なしでしょw
566が余計なこと書くから・・・
お助けお願いします。 スレッド内でメソッドに飛びループで処理をさせているんですが ループの途中でスレッドに帰っちゃってる状態なんですが (ループが途中で終わるような記述は書いてないです) どうも原因が掴めないです、スレッドが原因ってことはないですか?
そんな説明じゃ助けられないからコードを出せよ
str.intern();とするとコンストプールに追加されてしまいますが、コンストプールに追加しないで 当該文字列がコンストプールにあるかどうかを確認するにはどうすればよいでしょうか?
.classを読めば良いんじゃない? ところで、何で確認する必要があるの?
確認しなければならない理由が解らん
596 :
595 :2008/09/23(火) 12:47:24
>>595 は間違い
e.getSource();
かな
>492 Ctrl+c, Ctrl+v
598 :
デフォルトの名無しさん :2008/09/23(火) 14:14:51
ヤフオクのページで商品名や値段などの任意の情報だけを取得したいんですが、 まずHTMLを全て読み込んでそこから該当する情報だけを抜き出すしか方法はないですか? それだと必要のない情報(宣伝など)まで一度読み込まないといけないから、1000行近く読み込む事になるんですよ。 なるべく処理を軽くしたいんですがいい方法ありませんか?
599 :
デフォルトの名無しさん :2008/09/23(火) 14:18:36
intern()は実行時にやります。.classは関係ないかと。
Debian 4.0 etch 使ってます。 公式のSunサイトから JDK6をダウンロードしてインストールしました。 環境変数も $JAVA_HOMEの設定と $PATH:$JAVA_HOME/bin に追加して 問題なく正常にtomcatが起動する状態になりました。 しかし # reboot とOSを再起動するとtomcatが自動的にあがってきてくれません。 tomcatは # apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps でインストールしました。 同じようにインストール(apt-get install apache2) したApache2は OS起動時に自動的に起動してくれます。 # ls /etc/rc2.d/ すると S90tomcat5.5 が存在しますので、自動的にあがってくるはずなのですが・・・どうすれば自動的に立ち上がりますか?
どうみてもスレチ
>>601 ありがとうございます。
APIは盲点でした、しかもヤフーが公開してたとは。
605 :
デフォルトの名無しさん :2008/09/23(火) 17:17:12
581です。レスありがとうございます。ソケット通信などは組んだことはありますが、やはりあれの応用となるんですね。 しかし、およそ1マップに100人いたとして、そのうちの一人が座標を1でもかえると全ユーザーに新座標を送信すると考えると ドラッグで動かしている間にも座標が変わる度に サーバーに座標送信→サーバーが、受け取った座標を同マップにいるユーザー全員に送信。 クライアント側では、絶え間なく送られてくる他のユーザーの座標をリペイントしまくる。 やっぱりMMOの技術はすごいですね。
それを言うなら金融市場のデータ処理は桁違いに凄そうだ
607 :
デフォルトの名無しさん :2008/09/23(火) 17:57:36
>>605 たぶんそんな面倒なことになってないと思うけど、秋の夜長の妄想君ですか?
ひねくれすぎw
>>605 が何したよ。実際を知っているのならば軽く訂正してあげればいいのに・・
>>605 スレチなんであんまり引っ張りたくないんだけど、
同期するのは相互作用があるユーザだけで十分でしょ
少なくとも同一画面内のキャラだけで良いし、多分もっと少なくできると思うから
せいぜい数キャラ同期取れば十分では
画像を表示してちょろまかとした処理をするクラスAがあって、このクラスAは他の色んなクラスから呼ばれます 呼び出し元のクラスによって表示する画像が違う(他の処理は同じ)場合、 それぞれの画像についてのAのサブクラスを作って、それをそれぞれ呼び出すのと 呼び出すのは常にAで、呼び出すときにAに画像を引数として渡すのとどちらがいいですか?
画像を切り替えるためだけにそれぞれサブクラス作るのはアホらしくね?
ありがとうございます サブクラス作るのは止めます 処理がそれぞれ異なったりするときはサブクラス作るのもありですよね?
613 :
デフォルトの名無しさん :2008/09/23(火) 20:03:43
まずはjavaでシューティングゲームを作ってみろ。
今作ってるんです いまのところは直進弾しかないんで、画像変えるだけですけど 後々狙い撃ち弾や分裂弾、回転弾などを作るなら弾のクラス作って、それぞれの弾の性質のサブクラス作ろうかなって
615 :
デフォルトの名無しさん :2008/09/23(火) 20:38:40
海外のゲームのところに良質のサンプルがたくさんあるからそっちいけ。 まずは英語が出来ないとまったく話にならないけどなw
616 :
デフォルトの名無しさん :2008/09/23(火) 21:32:15
auのオープンアプリってどうやって作るんですか?
Javaと書いたらJAVAの間違いだよと指摘されました。 しかしsunのページに行ったら両方書いてありました。 どちらが正しいのでしょうか。
どっちでもいい
620 :
デフォルトの名無しさん :2008/09/23(火) 22:32:39
621 :
605 :2008/09/23(火) 22:53:40
すいません・・・JavaでMMOのサーバが出来るか相談するつもりが、いつの間にかサーバー全体の話になってました。 スレ違いすいませんでした。
JAVAアプレット側で作成した文字列をHTML等で作ったテキストエリアにコピーすることって可能なのでしょうか? ヒントとなるサイトとかやり方とかを教えてください。よろしくおんがいします。
>>622 AppletからJavaScriptをキックする事も、JavaScriptからAppletをキックすることも可能
だけど、ブラウザ依存の部分もあったはず
624 :
デフォルトの名無しさん :2008/09/24(水) 00:23:12
いや、キックじゃないな。まずはAppletからJavascriptをパンチして、それからキックだろw
>>623 返答ありがとうございます。
Appletからキックということは、AppletからJavaScriptを実行してテキストエリアに書くということでしょうか?
ヒントとなるサイトとかあったら教えてください
LiveCnnect。ただしmozilla系限定。 SeaMonkey持ってるならjsコンソールにjava.lang.System.out.println("西園寺 世界!!")と入れてjavaコンソール開くんだ!
627 :
623 :2008/09/24(水) 02:08:28
>>619 どちらでも大丈夫でしたか。
ありがとうございます。
二重のif文のテストデータについてなんですが、 仕様ではランクがA・Bと設定されていて、 ランクAで点数が80以上ならok、 ランクBで点数が85以上ならランクup、60以上85未満だとランクそのままと表示され、 それ以外の場合のランクが入った場合は 何も表示されないというものです それで、ランクがA・B以外の場合と設定したとして、 テストデータはどうすればいいか困っています Cの場合、Dの場合と記述するべきですか? またそのとき境界値は記述する必要はありますか? 記述する必要があれば、境界値は60,80,85ですか? 初歩的な質問ですみません。よろしくお願いします
「それ以外のランクが入った場合」の意味がわからない
Process.exitValueの戻り値で質問 正常が0なのはいいけど、他の場合の戻り値は何なんでしょう? JavaDocにも「正常なら0」としか書いてないですし 全部例外になるんでしょうか
起動した外部アプリケーションの終了時の値が返るんじゃないの? だからそのアプリケーションによりけりでしょ。たぶん。
>>629 「それ以外」をすべてテストすることなど不可能だから
"C", "", null についてやっておけばいいんじゃないか?
あと Java 直接関係ないから微妙にスレ違い
STGを作ったんだけど、 インスタンスの動的関連を表すにはどのUML図を使うのが適切ですか?
635 :
631 :2008/09/24(水) 15:30:22
Semaphoreの開放をロック取得順にしたいのですが、できますか?
638 :
629 :2008/09/24(水) 22:00:20
>>630 ,633
ありがとうございました、お陰様で解決しました
そしてスレ違い失礼しました
String str = new String("aaaa"); String str = new String("bbbb"); とすると、最初の方のオブジェクトってガベージされるまでメモリ上に残っちゃいますか?
なんか突っ込みどころ満載なコードだね。 String str = "aaaa"; str = "bbbb"; という理解でよい? 確かに"aaaa"の方はガベコレされるまで残るけど、あんまり気にするこっちゃないよ。
>>639 コンパイルエラーになります。
メモリを気にしては駄目です。
このぐらいを気にするぐらいなら、new String(String) を使わないでください。
642 :
デフォルトの名無しさん :2008/09/24(水) 22:38:00
643 :
639 :2008/09/24(水) 22:59:53
>>640 >>641 >>642 すいませんw
String[] str = new String[3];
str[0] = "aaaa";
str[1] = "bbbb";
str[2] = "cccc";
for(int i = 0; i < 3; i++) {
String str2 = str[i];
System.out.println(str2);
}
こんな感じを言いたかったんです
System.out.println()の後で
str2 = null; を入れる意味ってありますか?
644 :
デフォルトの名無しさん :2008/09/24(水) 23:02:04
647 :
デフォルトの名無しさん :2008/09/24(水) 23:20:06
null入れとくとNullPointer例外が発生してウハウハになることがあるけどねw
648 :
639 :2008/09/24(水) 23:27:19
ちょっと疑問が・・・。 今、コレクションフレームワークの勉強してんだけど、 List<String> list = new ArrayList<String>(); ってコードがあった。 何で、こんな書き方してるんでしょうか。 ArrayList<String> list = new ArrayList<String>(); じゃだめなのかな? 場合によってこういう書き方をすればいいというのが あるんでしょうか。
650 :
デフォルトの名無しさん :2008/09/25(木) 07:34:51
というか、君が勉強不足なだけでしょw
>>649 ensureCapacity とか trimToSize とか removeRange とか使わないのなら
変数の型が ArrayList<String> である必要はない。
>>649 何でもなにも、OOPっぽくてカッコいいからに決まってんでしょw
そんなのもわかんないおまえはバカ?
>>649 一つの指針として、宣言にはクラスよりインタフェースを使えというものがある
listをArrayListとしてしまうと、ArrayListからの変更は容易でないが
listをListとしておけば、LinkedListやListインタフェースを実装した他の何かにでも交換が効くようになる
でも実際のところ、listのスコープが狭いのであれば特に問題ない
654 :
デフォルトの名無しさん :2008/09/25(木) 08:06:49
そういう意見を良く聞くんですけど、そのように変更するようなコードはそもそも設計不足じゃないですか?アルゴからして全然違うんですけどね。
アルゴリズムを変えることが必須のケースもあるんだぜ?
いや。それはない。
ArrayListにするメリットがほとんどないからね たぶんArrayListがListにない便利なメソッドをたくさん持ってたらArrayListにしてると思うよw
>>654 アルゴリズムをアルゴと略すな、と思う元MZユーザー。
659 :
デフォルトの名無しさん :2008/09/25(木) 09:06:30
というか、俺はjava.util.Vectorをよく使うんだがw
>>658 なんかゴルゴの親戚みたいでかっこよくね?
Servletなのですが教えてください。 セッションIDがわかっているとして そのセッションIDからそのセッションを無効にすることはできますでしょうか?
いまだにArrayListを使う意味が分からん。 Listは普通はインスタンス変数でもつからね…
663 :
デフォルトの名無しさん :2008/09/25(木) 09:17:27
また外務大臣時代の漫画大賞みたく、優秀アプリ・ソフト大賞、優秀研究大賞やってくださいよ麻生さん。 森さんみたくイット革命とか言っていつのまにかアメリカに追い越されたりしないで真面目にやってね。麻生さん。
いやちがう。俺たちには中国共産党のソフトウェア業界がついているはず!!
665 :
デフォルトの名無しさん :2008/09/25(木) 09:29:27
確かに警察よりは共産党の方が信用できるけどな。 警察はすぐ裏切るから信用できん。
666 :
デフォルトの名無しさん :2008/09/25(木) 09:53:00
そろそろソフト産業育成してくれないかな。麻生さん。 ハードは日立とかNECとかあるから大丈夫けど、ソフトはMSとかみたいな大規模専業会社はないでしょ。 ここらでNTTデータあたりが出資して、ちっちゃいソフトハウスを全て結合してソフト産業を育成してほしい。 そろそろやっとかないと中国が本腰入れてくれるからさ、IPAあたりのリソースとプロジェクト組んでそろそろ日本のソフト産業を保護する会社のでかいの作るとかどお?
名前: E-mail: 内容: windowsで動かしていたtomcatのアプリがlinux上で動かそうとすると、 log4jで、ファイル出力用とコンソール用の2つを出力させてるんですが、 ファイルのみ出力されません。 出力先は、 /usr/local/tomcat/webapps/hogeProject/log/log.txt です。 windowsとlinuxの相違など、なにか問題点がありそうだったらご教授ください。
>>659 Vectorはマルチスレッド対応が無駄になることが多いから、理由がなけ
ればやめとけー。
inlineメソッドってjavaにないですか?
ないです そこまで速度が気になる場面でJavaを選ぶことがそもそも間違い
>>670 debug(xx + xx + xx);でデバッグでないときに演算処理が無駄だから、といわれ…
isdebugでifでくくればいいのですが、ログ出力に3行がいやだったので…
1行で書けばいいではないか if(isdebug)debug(xx+xx+xx);
スレここでいいか微妙なんだけども教えてくだしあ JAXB2.1で、XSDにmaxOccurs="unbounded"みたいに書いた部分は デフォルトではList型で実体がArrayListになるよね。 モデルをSwingで作ったUIでアレコレいじってマーシャル、とかやりたいので Listのところを同期リストにしたいんだけども、Vectorはレガシーなんで使いたくない。 (規模小さいので、Vectorを使いたくない理由にオーバーヘッド云々は含めていない) しかし、JAXBカスタマイズのcollectionTypeにはFQCNしか書けない。 (Collections.synchronizedList(new ArrayList())と出来るのが理想) xjcの成果のモデルクラス群はreadOnlyであるべきだと思うので、 ArrayListの部分を同期リストにラップするような修正も、出来れば避けたい。 何か解決策はあるんだろうか…今はVector使うか修正するしかないのかなぁ?
連投スマソ シングルスレッドで設計してArrayList使えばいいだけの話か
アア・・・俺はもうだめなようです そもそもSwingはシングルスレッドでしたorz
プログラマーの適正があるかないかってどうやって分かるの?
プログラマとしての人生を終えたとき。
678 :
デフォルトの名無しさん :2008/09/25(木) 18:54:51
>>668 あの意味が分からないんですけど、MTだからVector使ってるんですけど、それ以外にVectorを使う理由があるんですか?
680 :
デフォルトの名無しさん :2008/09/25(木) 20:04:46
ああ、アプレット用途ってのもあったねw
681 :
デフォルトの名無しさん :2008/09/25(木) 20:07:19
マルチスレッド前提だから、awtばっかりでswingなんか使ってないんだけど・・・なんかまずかった?といっても、MTとMVCつかうわけだから別にどっちでもいいのかなって感じはするけどね。
682 :
デフォルトの名無しさん :2008/09/25(木) 20:15:00
>>673 class MyCollectionsSynchronizedListNewArrayList extends ArrayList
ところであんたはプログラマ(PG SE)に向いてないな。どの言語をやってもどの概念を勉強してもこの業界では成功しないと思うよ。
Vectorって書き換えられて、今やレガシーともいえないんじゃなかったか?
なにを根拠にレガシーって言ってんですか?
685 :
デフォルトの名無しさん :2008/09/25(木) 22:58:10
SwingのJDialogに関して質問があります。 ダイアログ画面を特定の場所に表示させた後、マウスで画面を移動させないようにするため、 setEnable(false)を設定したのですが、右上の×ボタンが押せなくなってしまいました。 マウスで画面を移動させなくする&右上の×ボタンでウィンドウを閉じるには どうすればいいでしょうか?
xボタンの位置にxボタンのふりをした別のJWindowを・・・・・いや、なんでもない
>>678 イテレータ回すときは結局くくらなきゃいけないんだから、
Vectorのsynchronizedって無駄じゃない?
それは要素全部をイテレーションするときの話だろ? MTとはあまり関係ないな。
Vector使う奴は池沼
といっても、次からはクロージャが使われるからVectorもよく使われるようになるよ。
クロージャとVectorは関係なかろう
コルーチンと勘違いしてんだろ
693 :
デフォルトの名無しさん :2008/09/26(金) 11:34:55
AWTで,Panelの上に別の2枚のPanelを上下に並べるとき,その高さの比率を一定にするにはどうすればいいんでしょうか。 GridBagLayoutでgridheightを目的の比率に指定してもだめでした。
weightyを設定する
695 :
デフォルトの名無しさん :2008/09/26(金) 12:14:14
>>694 目からウロコ。
weight の意味をすっかり勘違いしてました。
「余分なスペースを分配する方法を指定」って,わかりにくい。
696 :
693 :2008/09/26(金) 14:44:38
>>694 いや,やっぱり,パネルの中にいろいろ入れると比率が変わってしまった。
setPreferredSizeとかsetMinimumSizeとか0にしとけばよいと思われ
698 :
693 :2008/09/26(金) 16:52:37
>>697 やってみたらうまくいったんですが,setPeferredSize とかって,5.0 から使えるようになったんですね。
事情があって,古いバージョンで動くようにしなきゃいけないんで使えないんですが。
Panelをサブクラス化してgetPreferredSizeをオーバーライドすれば
import java.util.*; public class ThreadTest1 { public static void main(String[] args) { Shared.sharedVector.add(0); new ReaderThread().start(); new WriterThread().start(); } } class Shared { public static Vector<Integer> sharedVector = new Vector<Integer>(); } class ReaderThread extends Thread { public void run() { System.out.println("マルチスレッドならVectorだろ"); try { while (true) System.out.print("" + Shared.sharedVector.get(Shared.sharedVector.size() - 1) + " "); } catch (Exception e) { e.printStackTrace(); System.out.println("(´・ω・`)"); } System.exit(0); } } class WriterThread extends Thread { public void run() { for (int i = 1; ; i++) { Shared.sharedVector.add(i); Shared.sharedVector.remove(0); } } }
> java ThreadTest1 マルチスレッドならVectorだろ 28 71 95 115 130 141 java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1 at java.util.Vector.get(Vector.java:694) at ReaderThread.run(ThreadTest1.java:16) (´・ω・`)
>>700-701 size()とget()の間にremove()が入った結果(´・ω・`)
君はMTについて根本的に分かってないんじゃないようだ。MTは難しいから一生理解できないんだろうけど
>>700-703 javadocをみていても、Threadクラスを直接継承する事はあまりないようですけど、あるとすればどういうときですか。
VectorをMTだからと使う奴がまだ残っているのか。
>>704 Runnable だけじゃ必要な機能が作れない時
>>706 new Thread(runnable)とするので、Threadクラスの機能は既に備わってるんですけど。
Runnable と Thread は同じものじゃねーっつうの。 Thread には void run() 以外に公開インターフェースがあるだろ。 それらをオーバーライドする必要があるときにやんだよ。
709 :
デフォルトの名無しさん :2008/09/27(土) 04:07:13
今日は何回ぐらい鼻糞を食べましたか?
710 :
デフォルトの名無しさん :2008/09/27(土) 04:11:55
コンパイルがうまくいきません 'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と表示されて先にすすめません どうすれば先に勧めるか教えてください
711 :
710 :2008/09/27(土) 04:24:44
再起動したら普通に直りました 失礼しました
712 :
デフォルトの名無しさん :2008/09/27(土) 12:34:29
輪郭線イメージと元画像を使って 輪郭線イメージをshapeのように扱って 元画像から画像を抽出するにはどうしたらいいでしょうか 閉輪郭線の場合は取り囲まれる部分、 そうでない場合は輪郭線部分が抜き出せれば最適です よろしくお願いします
713 :
デフォルトの名無しさん :2008/09/27(土) 17:16:44
Win32_SystemEnclosureのようにSerialNumberなどの システム情報を取得できるJAVAのクラスはありませんか。 どうにも見つからないので教えてください。
ない
JNI
716 :
685 :2008/09/27(土) 19:54:29
やっぱりJDialogのウィンドウを移動不可だけに するのは無理のようですね。
>>716 方法はいろいろあるんじゃないの?
無理じゃないよ。
Javaからプログラミング始めて早2年 他言語も始めようと思うのですが Javaにはない魅力があり、今後需要の拡大が見込める言語を教えてください!
C言語
JSmoothていうプログラムでjarファイルとかをexe化して起動できるってやつ使ってみたんだけど 確かにできたファイルのアイコンをダブルクリックしたら起動はできたけど、このexeに何らかの拡張子を 関連付けようとしたら、プログラムの選択で何度選んでもリストに入ってこないんだけど何で分かる人いる? ソフト板にスレ無くて・・・
英語ができたらなんか得なことあるの?
日本語訳のない情報が読める
日本語の情報が無いようなレベルには一生なれそうにないから いいや
antの質問は、このスレでよいのでしょうか? 他に適切なスレが見当たらなかったので。 antでは、-propertyfile でプロパティファイルの指定をできますが、 この値を参照するための組み込み変数は用意されていないのでしょうか。 具体的には、 <fail unless="propertyfile" message="property file is not set." /> みたいに、プロパティファイルが指定されていない場合にエラーを出したいです。
>>712 釣り?
スレ違いだから別なとこで聞いて。
727 :
デフォルトの名無しさん :2008/09/28(日) 09:10:29
あるプログラムを実行したら Exception in thread "main"java.lang.NoSuchMethodError: main ってのが出て実効出来なかったのですがどうすれば良いですか?
そのプログラムにpublic static main(String[] args)メソッドがあるかどうか確認するといいよ
void
ソースコードのテキストファイルエンコードはUTF-8でいいんだろうけど 改行コードはどれにすればいいの? なんかしきたりというか決まりみたいなのある?
731 :
デフォルトの名無しさん :2008/09/28(日) 14:56:11
>>726 BufferedImageの応用活用についてだから釣りでもすれ違いでもないだろ
VMのオプションで明示的にファイルエンコードの指定すればいいのでUTF-8である必要なし 改行コードはどれにとあるけど、改行コードですらなくても構わない。 構文解析の区切り文字ならスペースでもタブでも可
>>732 ソースの話なんだから、VMは関係ないでしょ。
コンパイラならともかく。
>>730 個人的にはLFのみが好きだけど、
Windowsのメモ帳はCR+LFでないと改行扱いしてくれない。
好き好きで。
javaで実行されたjarファイルの絶対パスってどうすれば得られる?設定ファイル読み込みたいんだけど
((URLClassLoader)自分のクラス名.class.getClassLoader()).getURLs()
736 :
デフォルトの名無しさん :2008/09/28(日) 18:50:08
LFのみってやつオジサン。まだ絶滅してないの?
>((URLClassLoader)自分のクラス名.class.getClassLoader()).getURLs() ((URLClassLoader)アプリケーションクラス名.class.getClassLoader()).getURLs() にしないとCLASSPATHとおった他のjar拾わないか?
自分のクラスとアプリケーションクラスの違いをkwsk・・・
>>736 UNIXとファイル交換する時に、何も悩まなくて済むからね。
なぜオジサンなのか謎だ。
Vector使う奴は池沼
742 :
デフォルトの名無しさん :2008/09/28(日) 23:27:43
コンパイルとかコーディング中のメンバの呼び出してかにすげー時間掛かるんでその間に他の作業(端末上)をしているのですが、端末に戻るタイミングが分かる様に処理が終わったらビープ音が鳴るように出来ませんか。
743 :
デフォルトの名無しさん :2008/09/28(日) 23:34:43
744 :
デフォルトの名無しさん :2008/09/29(月) 00:18:52
>>740 オジサンなのは、旧式MAC使いで未だにテキストモードとバイナリモードの違いを理解してないままだからw
746 :
デフォルトの名無しさん :2008/09/29(月) 00:22:31
質問です。 // 接続 URLConnection uc = src_url.openConnection(); // HTMLを読み込む BufferedInputStream bis = new BufferedInputStream(uc.getInputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(bis, charset)); という風に、指定のcharsetに文字コードを変換して、HTMLを読み込んでいます。 しかし、読み込んだ後、色々処理を行い、最後に再び元の文字コードで出力したいのです。 そこで、元の文字コードを取得したいのですが、該当するメソッドが見当たりません。 そういった事は不可能なのでしょうか?
>>739 自分のクラス
thisとコンテキストが同じクラス。
アプリケーションクラス
mainメソッドを持つクラス。
>>741 過去レス見てみたんですけど、マルチスレッドのことをあなたはちゃんと勉強した方がいいですよ。
749 :
デフォルトの名無しさん :2008/09/29(月) 00:26:28
LFじゃなくてCRのみの奴がおじさん??w誤爆?
>>745 MacはCRのみだよね。
なにがオジサンなんだろう。
個人的に、改行に2文字食われるのは、なんか釈然としない。
やっぱLFのみが合理的。
751 :
デフォルトの名無しさん :2008/09/29(月) 00:33:54
>>750 テキスト・バイナリモードの違いとか理解しているの?(UNIXって言うんだから当然Cのあれ)
thread って直訳すると糸って読むようですが なんで thread っていうのでしょうか?
753 :
デフォルトの名無しさん :2008/09/29(月) 00:35:58
>>746 指定の charset とは何ぞや、と。
>>746 そこの InputStreamReader に渡してる charset が元の文字コードじゃねーの?
JMXなるものはJVMの状態を詳細に監視・管理できるとあるのですが どのように幸せになれる機能かピンときません。 具体的にどういった使われ方をするのでしょうか
758 :
デフォルトの名無しさん :2008/09/29(月) 07:42:43
亀だが
>>682 お前どんだけ池沼なんだ
デフォルトコンストラクタしか呼ばれないんだから無理だろ。
お前の方がPG適正ないわ
んで結局、最近のVMは良くなってるしVector問題ないんじゃねっていう
761 :
693 :2008/09/29(月) 13:17:05
>>699 亀レス申し訳ない。
またしても目からウロコ、そういう方法があったんですね。うまくいきました。
PreferredSize っていうのが普通はどうやって決まってるのかわからないので、強制的に設定するのは少し気持ち悪いけど、追々勉強します。
どうもありがとうございました。
762 :
デフォルトの名無しさん :2008/09/29(月) 13:28:28
>>761 目玉が入ってる穴から糞が出ちゃたんですか?
763 :
デフォルトの名無しさん :2008/09/29(月) 14:26:53
>>759 は何を言ってるのか意味不明なんですけど、誰かエスパーしてくれませんか?
764 :
デフォルトの名無しさん :2008/09/29(月) 17:09:39
javaを始めたばかりなのですが誰か次のプログラムの作り方教えてください。 4ケタの数字をランダムに選びます。選ばれた4ケタの数字は見えないようにする。 左のケタから順に1〜9の数字を選びtrueならひとつ右のケタに移動しまた1〜9を選び、 それを繰り返し4ケタ当てるプログラムを作りたいので教えてください。
マジで日教組は糞だな。こんなゆとり連中を作りやがって。
767 :
デフォルトの名無しさん :2008/09/29(月) 17:44:52
けち
768 :
デフォルトの名無しさん :2008/09/29(月) 17:45:23
けち
769 :
デフォルトの名無しさん :2008/09/29(月) 17:51:14
765 きついけど良いやつ ごめんね とりあえず 行ってみる
>>767 >>768 お前が怠慢なだけだろ。
こっちは善意で助けてんだから、助けてもらえないからケチってのはおかしい。
ゆとりは社会の害虫です。
わかる?害虫。
クソは肥料になるけど、害虫は害にしかならない。
お前は害にしかならない。
そんな簡単なこともできないやつはロクに仕事もできない。(まともなPGができない)
本当に害なんだよ。周りはそれをフォローしなくちゃいけないから。
考えをあらためろ。
カオスってるな
洗顔スクラブみたいな事を。
774 :
デフォルトの名無しさん :2008/09/30(火) 00:43:13
>>774 なんだ?煽ってんのか?
意味がわからんからスルーしとくわ
777 :
デフォルトの名無しさん :2008/10/01(水) 10:19:55
tiff画像を扱うためにJava Advanced Imaging-Image I/O Tools1.0_01を
ダウンロードしてインストールしたつもりなのですが
下記のURLのプログラムを実行してもImageI/Oがtiffに対応しているとは表示されません。。。
インストールするときなどに何か特別な設定が必要なのでしょうか?
OS:vista Homw Premium
java:jdk1.6.0_07
eclipseなどは使用しておりません。
参考にしたURL
ttp://moyolab.blog57.fc2.com/blog-entry-46.html
778 :
デフォルトの名無しさん :2008/10/01(水) 10:21:10
class path
779 :
777 :2008/10/01(水) 10:30:30
>778 すばやい回答ありがとうございます。 まだjava始めたばかりなのでできるかわかりませんが、ググって挑戦してみます。
780 :
777 :2008/10/01(水) 10:41:45
classpathの理解はいまいちできていませんがtiffに対応できるようになりました。 助言ありがとうございました。
781 :
デフォルトの名無しさん :2008/10/01(水) 11:12:56
また教えて君を量産してんのかw
782 :
デフォルトの名無しさん :2008/10/02(木) 03:48:43
未だに使う(実装)する機会がないのですが、クラスメソッド(static method)はどういうときに有効なんでしょうか。
簡単な例を示すとすればデザインパターンのシングルトンとか。
>>783 ?
シングルトンにするとクラスメソッドである必要がないんじゃない??
?
あ、インスタンス取得するメソッドで使うか・・・
数学関係の関数みたいに引数の値が同じなら結果が常に同じならstaticにするべき
synchronizedにするときによくでてくる、同期化コストってのはどういうコストなんですか? Javaではモニターの取得破棄のことだと思いますが、それが問題になる事例は何が考えられるんでしょうか。
>>787 それだと各クラスのクラスメソッドにする必要はなく、SwingUtilites.staticmethod()でいいんじゃないですか?
>>789 みんながみんなSwing関連ってわけでもないから、その名前はちょっと
>>788 時間的なコスト
処理に要する時間がいくら長くても構わない、時間は無限にあるんだ、とかいう考えなら特に問題にならない
大抵のユーザは処理が遅いと文句を言うので、出来るだけコストを減らしたいというのはそんなに珍しいことじゃないと思うけど
792 :
デフォルトの名無しさん :2008/10/02(木) 11:29:58
synchronizedブロックにしないで非同期コードにすると、ユーザーの要求が満たされるほど速くなる場合なんてあるんですか?
そのsynchronizedが何百万回も繰り返すループの内側で行われていたとしたら効果があるんじゃないか? 通常は全体を見直してアルゴリズムを改善した方がいいと思うよ
794 :
デフォルトの名無しさん :2008/10/02(木) 12:25:28
そのループのブロックが同期されていれば良い訳で、あなたは大して経験もないのに答えたつもりになってませんか? そもそも、数百万回の同期化ループを改善したところでユーザーの要求が満たされる事例ともいえないわけで、あなたはもともと無能なんだし、知らないなら答えない方がいいですよ。
何が言いたいのか分からない
そうっすね。 簡単な質問にだけ答えることにします。
はじめまして。ところで、今、 update()とpaint()の呼び出しについて調べています。 非常にシンプルなプログラムで、Frameを継承したメインプログラム 中で、MyLabelというLabelを継承した自前のクラスのオブジェクト を生成し、親のFrameにadd()してみました。 すると、ウィンドウサイズを変更した際などにpaint()は呼び出され ますが、update()は呼び出されませんでした。 ネットの各種の文章によれば、update()は、repaint()が呼び出され ると呼び出され、そこで背景を消去してからpaint()が呼ばれる、 とあります。 両方が正しいとすると、update()は、repaint()の時だけ呼ばれ、 ウィンドウサイズの変更などの時は、paint()が直接呼ばれる、 と言うことでしょうか。 しかし、実験によれば、ウィンドウサイズを変更しただけの時 でも、背景はクリアされてしまっています。これだけでは、 説明が付きません。
軽量かどうかで挙動が変わるし、それ以上知りたかったらjavaのソースをしっかり見とけ。
system-trigerred repaint のときは、AWTが自動的に背景をクリアして paint を呼びます (システムプロパティ sun.awt.noerasebackground を true に設定するとクリアしなくなります) update が paint と分けられてるのは、repaint 時は全体を描かずに差分だけ更新したい人むけにオーバーライドできるようにです 特にオーバーライドしてなければ、いつも通り背景をクリアして paint を呼びます
800 :
797 :2008/10/02(木) 14:12:29
>>798-799 有り難うございます。
実際に、sun.awt.noerasebackground をsetProperty()で試してみる
と確かに背景が「消去されない場合がある」事が分かりました。
ただし、例えば、親Frameのサイズ変更時は消去されます。
801 :
797 :2008/10/02(木) 14:28:55
ところで、 JScrollPaneを使っている場合、スクロールバーを動かすなどして 描画範囲が変わった時、その中に埋め込んでいるコンポーネン トのpaint()が自動的に呼び出されます。 この場合、「system-triggerd repaint」ではないと思うのですが、 update()が呼び出されないようです。 ということは、JScrollPaneは、子wnd.repaint()とせずに、 自前で子wndの内部を消去した後、子wnd.paint()としていると 言うことになるのでしょうか?
「updateが呼ばれて消去する」は仕様かもしれないが、だからといって 「updateが呼ばれないなら消去しない」とは決まってないんだろ。
>>801 Swingはまったく事情が異なる
SwingのrepaintはRepaintManager#addDirtyRegionへ行って、
そこからJComponent#paintImmediatelyが呼ばれる
804 :
797 :2008/10/02(木) 14:41:34
>>802 その通りだと思うんですが、自前でDouble Bufferingする場合、
JScrollPaneで消去してしまうのは無駄になる場合があるので、
JScrollPaneで自動消去をOFFにする方法があれば知りたいです。
805 :
デフォルトの名無しさん :2008/10/02(木) 14:43:25
swingすれでやれ。
>>804 Swingコンポーネントは自動的にダブルバッファリングするから、
自前のダブルバッファを加えると全部でトリプルバッファリングになってしまわない?
807 :
797 :2008/10/02(木) 14:56:09
>>806 そうなんですが、Swingではルートペーンなど、最初にある
コンテナだけがダブルバッファリングONで、その子コンポーネント
は、ダブルバッファリングOFFだそうです。
その結果、JLayoutPaneを使って子Frameを上に重ねられるようにした
場合、これらの重なった「絵」は、全体に共通の1つのバッファで
合成されたものなので、下になっているウィンドウの絵は、
保存されません。
フォント描画が遅いので、スクロールをする際は、以前に描いた
文字を再利用できるようにしたいんです。
最初からそう言えよ。 つ【Swingスレ】
配列とコレクションの違いは 配列:length固定 コレクション:length可変なので外部データの扱いが楽 と理解して問題ないでしょうか
810 :
デフォルトの名無しさん :2008/10/02(木) 20:37:07
あるプログラムを実行したら Exception in thread "main"java.lang.NoSuchMethodError: main ってのが出て実効出来なかったのですがどうすれば良いですか?
811 :
デフォルトの名無しさん :2008/10/02(木) 20:47:47
ちなみにこういうプログラムです 長いので何回か分けて書きます import java.awt.*; import java.applet.*; import javax.swing.*; public class FirstApplet extends JApplet{ public JButton b1,b2,b3; static final String message = "Hello World!"; private Font font = new Font("serif",Font.ITALIC + Font.BOLD,36); public void init(){ getContentPane().setLayout(null); Icon icn8= new ImageIcon("icn8.gif"); Icon icn9= new ImageIcon("icn9.gif"); b1 = new JButton("prev",icn8); b1.setSize(30,25); b1.setLocation(100,60); b1.setVisible(true); b1.setOpaque(false); b1.setBorderPainted(false); //b1.addActionListener(lsn); this.getContentPane().add(b1
812 :
デフォルトの名無しさん :2008/10/02(木) 20:48:58
b2 = new JButton("next",icn9); b2.setSize(30,25); b2.setLocation(135,60); b2.setVisible(true); b2.setOpaque(false); b2.setBorderPainted(false); //b2.addActionListener(lsn); this.getContentPane().add(b2); b3 = new JButton("play"); b3.setSize(65,25); b3.setLocation(100,30); b3.setVisible(true); b3.setOpaque(false); b3.setBorderPainted(true); //b3.addActionListener(lsn); this.getContentPane().add(b3); } public void paint(Graphics g){ super.paint(g); g.setColor(Color.blue); g.setFont(font); g.drawString("message",40,120); } }
>810-812 呼び出し用のHTMLソースを書く。以下のどちらかを使って確認できる 1. Webブラウザ 2. appletviewer
814 :
デフォルトの名無しさん :2008/10/02(木) 21:20:54
それで分からないのなら勉強不足だろうなぁ。
>>815 そんなあ><
811のプログラムをレポートとして出さなきゃいけないから
あせってるんですよ
上記のプログラムに何か書くんじゃないんですか?
では、宿題スレへ
<applet code="FirstApplet.class" width="width" height="height"> </applet> widthとheightに好きな値入れて、適当な.htmlとして保存。 FirstApplet.classと同ディレクトリに上のhtml入れてブラウザからそのhtmlを開く。 そうするとアプレットが起動します。 appletviewerで見るならソース内に上のコードをコメントアウトして入れて appletviewer FirstApplet.java こんな感じで見るのが一般的かな。 さぁ消え失せやがれ
>>818 意味が分からん
簡単に言うと何をすれば良いわけ?
簡単に言うと
>>818 が書いた通りのことをすればよい
>>819 ここまで書かれて分からない人は素直に単位を落とせばいいと思います
>>819 例えば、FirstAppletっつーのを動かしたいなら
テキストでもいいから
<applet code="FirstApplet.class" width="500" height="7777777777777777">
</applet>
みたいに書いて、保存。
拡張子.txtから.htmlに変更。
これで動く。
824 :
デフォルトの名無しさん :2008/10/02(木) 23:37:06
JFrameオブジェクトをdispose()するとヒープメモリが開放されると思っていたのですが、 JConsoleで監視していても一向にメモリ使用量が減ってくれません。 これはガベージコレクタが動いていないだけでしょうか?
>>824 解放するのはGUIリソースであってメモリじゃないぞ。
827 :
デフォルトの名無しさん :2008/10/02(木) 23:54:20
>>825 そうだったんですか?setVisible(true)を実行するとメモリも消費していたので、
dispose()で消去すればメモリが開放されると思っていました。
という事は、メモリを開放するにはガベージコレクタが不定期に実行されるのを
待つか、System.gc()で意図的に開放させるしかないのでしょうか?
じゃヴぁなんだからメモリの開放は(あんまり)気にするな
こうやってSystem.gc()まみれのソースが生まれるわけですね
830 :
デフォルトの名無しさん :2008/10/03(金) 09:17:26
あれ?javaにもsystem.gc()ってあったんだ
あるよ。java.lang.System.gc() .NETのはSystem.GC.Collect()
新しく質問ですが、 System.out.printf() などの、System.out を import 文で消せるかと 思ったのですが、上手くいきませんでした。 消すことは可能でしょうか? もし、import文で消せないとしたら、なぜですか?
printfってstaticじゃないんじゃねーの
import static java.lang.System.out; out.println("Hello"); とりあえずSystemまでは消せる。
Systemはパッケージじゃなくてクラス outはPrintStreamなフィールド printlnはPrintStreamのメソッド
837 :
833 :2008/10/03(金) 18:31:36
無理。
自分のクラスに public static void println(Object x) { System.out.println(x); } とか public static void printf(String format, Object... args) { System.out.printf(format, args); } と書いとけ
C#のwebBrowser1_DocumentCompletedにあたる webを読み終わった後に呼ばれるイベントは何ですか?
またまた抽象的な・・・ ParserDelegatorでHTMLDocumentへ読み終わった後ってこと?
どうやってwebを読んでるの? ライブラリのHotJavaParser?
最終的にはHtmlととりたいんですが C#のときにwebを表示して完全に終わった後にwebBrowser1_DocumentCompletedが呼ばれて そこでHtmlをとってました javaでJEditorPaneでwebを表示してそれが完全に読み終わったタイミングで Htmlをとるサンプルがあったのでそのルーチンを呼びたいのです
>>842 JEditorPane doc_pane = new JEditorPane(アドレス);
というサンプルがあったのでそれをそのまま使ってます
よく考えると843の方法ではストリームを使うので別にわざわざweb表示する必要なかったですが 一応完全に読み終わったとき判断する方法が知りたいです
JEditorPaneでURL読み込んで表示させた後でそのページのソースを取得したいってこと? 何がしたいのかさっぱりだよ。
でしたら普通には無理です。 まず読み込み完了のリスナーはたぶんない。 だから作らないとね。 でソースは読み込み後取得は不可。 HTMLDocumentとしてしか残らないんじゃないかな だから読み込み自体をキャッシュしておくしかない。 読み込み文字列全て保存しておくReaderのラッパーかなんか作る HTMLのパージングのリスナーを作る。 HTMLEditorKit拡張してparseをオーバーライドして、引数のReaderを普通に使わずにさっき作ったラッパーでくるんでsuper.parse呼び出す。fireHTMLParsed... 作ったHTMLEditorKitをJEditorPaneのregistEditorkit***で登録。 でソース取得したいならさっきのラッパーに問い合わせ・・・ 一応こんなに適当でも出来ないことはない。
そうですか、回答ありがとうございます VB,C#がweb表示からその関連でHTML取得という流れだったので(しかも終了タイミングを気にしなくてはいけない) そういう風に考えてしまいました javaなりのHTML取得を考えてみます
C#のWebBrowserはjavascript実行してくれるけど JEditorPaneは実行してくれないね
JDICでも使ったら?
そーいや、JWebPane ってのはどーなったんだろ?
854 :
デフォルトの名無しさん :2008/10/04(土) 11:38:26
下の問題が分かりません。classBでcatchに行っているようですが、何ででしょう?throw new error()もよく分かりません。 どなたかご教授願います。 Java言語で書いた次のプログラムがある。A.foo()を呼び出したときの返り値として適切なものを@〜Dの中から選べ。 class A { static int foo() { int x = 0; try { x = B.bar(x); } catch (Error y) { x += 4; } finally { x += 8; } return x; } } class B { static int bar(int x) throws Error { try { throw new Error(); } catch (Error y) { x += 1; } finally { x += 2; } return x
字下げしてないから非常に見にくいな
@〜Dって選択肢ないじゃん、馬鹿?
858 :
857 :2008/10/04(土) 12:51:18
>>857 そうです。11です。
おそらく、1+2+8なのでしょうが、どうしてそのような流れになるのかがイマイチわかりません。
TCP/IP通信をソケット通信で実装するプログラムで質問です。 まず、1サーバー(ソケット受信側)対 多クライアントの通信は、 データ受信後の処理をスレッド化することで対応できます。 私が実装したいのは、多サーバ 対 多クライアント です。 (localhostの10000番ポートと、11000番ポートと、12000番ポートで受信し、それぞれで別の処理をする、など) サーバークラスのインスタンスを呼び出すと、処理待ちうけ状態になってしまい、 呼び出し元に処理が戻ってきません。 NewIOパッケージを使っても、待ち受け状態になります。 何か上手い呼び出し方は無いでしょうか・・・。 (要は、入力待ち状態のオブジェクトを複数呼び出せれば良いです) 試しに、サーバークラスをスレッド化してみたのですが、 スレッドからさらにスレッドを呼び出すような形になってしまい、どうも上手く動作しないようです。
>>858 なるほど。
trow new Error(); っていう文は、「何があってもErrorをスローする」って意味なんだよ。
意図的にエラーをひきおこすんだよね。
だから、まずClass B内でErrorが意図的にスローされ、キャッチされてx += 1;
finallyで +2。
Class Aにもどって、finallyで+8で11。
Aの側ではx=B.bar(x)という式は普通に実行可能な式だからエラーは起きない。
こういうことなんだろうね。
861 :
857 :2008/10/04(土) 13:04:42
>>860 よく分かりました。試験の過去問なので少し変なプログラムでした。
ありがとうございました。
スレッドからスレッドなんて普通じゃん
864 :
デフォルトの名無しさん :2008/10/04(土) 15:29:36
>>859 何が問題なのかさっぱりわかんないんだけど、読んだところ、ブロッキングしちゃうのが問題なだけじゃないか?
>>866 参考にはなりますが、javaでやるとなると他にもいろいろ機能が必要なので
実際にjavaでプログラミングされているソースが見てみたいです。
つまり自分でプログラミングするつもりはないと
>>866 昔は256階調とかの色テーブルとメタボールの画像を事前に用意してたもんだが。
最近は画面上の全ての画素でメタボールとの中心点の距離計算して、
そっから色算出してもちゃんと動くんだねぇ。
>>868 エフェクトがまずどういう風に作られてるかさっぱりわからないので、
サンプルソースを糸口に考えていこうかと。
>>869 なるほど。ありがとうございます。
円を色調をずらしながら表示していくやり方しか思い浮かばなかったので、
ピクセル単位で描画してみようと思います。
871 :
デフォルトの名無しさん :2008/10/04(土) 20:57:40
画像処理について質問したいんですが、 fillRectで四角形を2つ作って、その図形の半分重ね合わせた場合 重ね合わせた下の図形は残るわけですが、 その部分を消したい場合は場合どういった方法がありますか? 2つの四角形を透かす処理をした場合に 上下重なった下の図形が写ると具合がわるいので
>>870 このソースから見るに、MemoryImageSourceでやるんだと思うけど、使い方わかる?
あとはループするたびに、前に造った画像を減色していく感じだねー。
>>869 それ3Dですよね?10年以上前だとおもんですけど、いつ頃の話ですか?
>>872 使ったことないですが、検索してみたらたくさん解説があったので、頑張って挑戦してみます。
ありがとうございました。
876 :
859 :2008/10/04(土) 22:31:39
>>862 ありがとうございます!
そのページは知らなかったので熟読いたします。
今あるプログラムはNonBlockingなはずなんですが、
While句の無限ループがあるので、何か作り方が一貫していない気がします。
スレッドからスレッド〜 のくだりですが、スレッドとしてサーバーを起動した後に
クライアントからデータを投げると、socket関連のエラーが出てしまうんです。
今ソースは手元にないので、詳細なエラー等が出せず、すみません。
877 :
デフォルトの名無しさん :2008/10/04(土) 22:59:14
java in the box のあの人、最近更新してないよね。 サンプルとか的を得ていていつも分かりやすいけど、体でも壊しちゃったのかな…
>>874 869じゃないけど、2次元メタボールってのもある。
パーティクル用の丸い円を用意しておいて、それを黒画面に毎フレーム加算していく。
と同時に、毎フレームごとに全体の色に、小さな値を減算していけばそういう風なエフェクト作れると思うよ。
879 :
デフォルトの名無しさん :2008/10/05(日) 00:31:13
メタボールってのは3Dだと思ったんですけど、2Dのアニメーションとなるといつの時代の話ですか? というか、その実装はアニメーションのようですけど、P5または486+FPU程度の世代(133MHz)で160x120程度の全ピクセルを演算するとかは全く実用的な方法ではなかったんですか?
880 :
デフォルトの名無しさん :2008/10/05(日) 00:32:56
一応133MHZのノートPC(win95)あるんです・・・ 気が向いたらjdk1.2程度の環境で実装してテストしてみますけどw
結局こいつは何が言いたいんだ?
882 :
名無しさん :2008/10/05(日) 13:37:32
SocketとServerSocketを使って送受信する場合に、 クライアント側がストリームに2回書き込んだとします。 サーバ側で読み込むときに、1回分ずつ、きっちりと読み込む 方法(2回分一緒にではなく)はありますか?
しんくろないずど
1回とか2回とかなんて概念はない 1連のデータの流れだじゃらStreamというんだろ
885 :
882 :2008/10/05(日) 13:59:25
そうですよね。。。 書き込む側でflush()とかしても、関係ないですよね。
プロトコルを決めるしかない。 例えば最初の4バイトで、1回の送信が何バイトあるかを送る(ヘッダ) 受信側はとりあえず4バイト読む その後は、それを解析して例えば50バイト読み、1回の送信として扱う。 続けて待機モードにはいって・・・と繰り返す。 あとは最終リクエストの場合は・・・とか必要に応じて取り決めれば良い。
887 :
デフォルトの名無しさん :2008/10/05(日) 16:54:41
矢印が点滅をする画像ファイルを ImageIcon icon = new ImageIcon(getClass().getResource("イメージファイル")); cursorImage = icon.getImage(); で取得しcomponentPaint()で表示しました。 矢印が消えたり表示したりして、成功したのですが 今度はその矢印を点滅をさせないように (矢印を表示しっぱなしで)プログラムで その画像を制御できますか? できるとしたら、どんな方法がありますか?
矢印が点滅しない画像ファイルをアイコンとして取得し変えたいタイミングで点滅するものと入れ替える
889 :
デフォルトの名無しさん :2008/10/06(月) 02:50:20
プログラミング初心者です。m(_ _)m 自分で作ったJavaアプリケーションを彼女に送りたいのですが、 Javaの場合、exeファイルはできませんよね? 配布するときは、classファイルを送るのですか? 誰かお願いします。 ちなみに実行すると画面に"I love you"と出ます。 swing使いました。俺にとって会心の出来です。
>>889 jar
彼女のとこにjavaが入ってなかったら知らんが
>>889 にくいねこの野郎
なんだか低レ研の短編思い出した
892 :
デフォルトの名無しさん :2008/10/06(月) 11:04:21
889くそわろたw
JARでもいいけど、JNIだと関連づけされていなくても起動可能
894 :
デフォルトの名無しさん :2008/10/06(月) 13:00:49
ポーランド記法で書かれた式を通常の式に直す、便利なクラスか何かはないですか。 やはり自分で全部書くしかないですよね
普通の式って中置記法?自分で書く。 ていうか逆ポーランドじゃなくてポーランド?宿題か?
宿題だろ、便利なクラスがあっても宿題ならばアルゴリズム(ロジック)を考えないと意味無し
いえ、趣味ですよ これホント
趣味ならますます自分でやろうよ
ない。単純に計算を動的にやりたいならjavascriptでも呼び出すって邪道な方法もある。
901 :
デフォルトの名無しさん :2008/10/06(月) 17:07:11
んー。共産党もいいかもしれないな…
ポーランドが東側の共産国だったこととかけてるの?
リフレクションとかで、あるpackageに属するクラスを取得するみたいなことってできませんか? とあるサービス起動時に整合性が取れているかのチェックを動的にしたいのですが、 いい方法があればご教示お願いします。
イマイチ分からないので、もう少し具体的に質問を書いてくれませんか?
906 :
903 :2008/10/06(月) 20:35:03
>>904 すみません。
たとえば
jp.co.aaaa
というパッケージの下に
ClassA
ClassB
ClassC
というクラスが3つあるとしたら
その3つを動的に取得する方法ってありますか?
性的!
>>906 基本的には無理
無いクラスを要求されたらその場で動的に生成するような変わったクラスローダを作ることも出来るわけで
そのような無限にクラスを生み出すことが可能だいうことを考えると存在するクラスをすべて挙げるということは出来ない
でもまぁ一般的な場合でいうとURLClassLoaderからURLを取得して
Fileに変換してFile#listなりZipFile#entriesなりで.classファイルの一覧を取得すればいいんじゃないか
URLがhttpだったらどうにもならないが
訂正 × URLがhttpだったらどうにもならないが ○ URLがhttpでもzipだったらダウンロードして展開すればいいけれどディレクトリを指してたら無理
910 :
デフォルトの名無しさん :2008/10/06(月) 23:21:21
JavaでJFrameやJDialogなどの画面を表示する際、 デスクトップ上の最前面にウィンドウを表示するには どうすればよいでしょうか? toFront()を実行しても何故か最前面に表示されません。
>>905 逆ポーランドとポーランドが別物だって分かってるか?
>>910 setAlwaysOnTop(true)
>>912 ありがとうございます。
言葉が足りず誤解させてしまったので追記させて頂きます。
”ウィンドウを表示した最初だけ”最前面に表示したいです。
setAlwaysOnTop(true)を実行すると”常に”最前面に
表示されてしまいます。
914 :
903 :2008/10/07(火) 07:10:42
>>908 ご回答ありがとうございます。
動的は諦めて静的な方法で検討することにします。
eclipse等、jarにあるクラスなど オートコンプリートで列挙できるので 標準機能またはフリーのツールで そういった機能がありそうだと思うのはもれだけ?
別に一覧を得る必要がないなら、 例えば ClassA、ClassB、ClassC という固定の名前のクラスが存在すればよく それ以外に何か他のクラスがあるかどうかはどうでもいい、というのであれば Class.forName でその名前のクラスをロードしてみればいいと思う
swing+SWTに関係してる質問させていただきます。 SwingとSWTの連携云々は出来たのですが、swingの「JInternalFrame」にshellを どう乗せればいいのか、教えて欲しいです。 今やろうとしてることとしては、Swing内のウィンドウをSWTにする、ということをしているのですが それらしいサンプルを見つけることが出来ず、行き詰ってます
918 :
デフォルトの名無しさん :2008/10/07(火) 15:57:10
shellって?
917
AWT_SWTはほとんど触ったこと無いけど、
JInternalFrameにaddしたCanvasオブジェクトを指定して
AWT_SWT.new_Shell()でシェル作るとかどう?
つまり、Swingのウィンドウ内のウィンドウはSwingなんだけど、
その中身だけはSWTで描画している、という感じ。
>>918 分からなかったら回答しなくていいよ。
CSS Validator(
http://jigsaw.w3.org/css-validator/DOWNLOAD.html )をAntで
コンパイルしたいのですが、antを実行すると以下のようなエラーになってしまいます。
[javac] /home/USER/cvs/2002/css-validator/org/w3c/css/index/TranslationTableGenerator.java:21: パッケージ org.apache.commons.lang は存在しません。
[javac] import org.apache.commons.lang.StringEscapeUtils;
[javac] ^
[javac] /home/USER/cvs/2002/css-validator/org/w3c/css/index/TranslationTableGenerator.java:113: シンボルを見つけられません。
[javac] シンボル: 変数 StringEscapeUtils
[javac] 場所 : org.w3c.css.index.TranslationTableGenerator の クラス
[javac] translations_table = translations_table+"<p>"+StringEscapeUtils.escapeHtml(ac_default.getMsg().getString(property_name))+"</p></th>";
commons-langはインストールされているし、自分でテストしてみると
StringEscapeUtils.escapeHtml()は実行されたので、なにが問題なのか
よくわかりません。どなたかヒントをご教示いただけると助かります。
JDKのバージョンは6-06-0、Antのバージョンは1.7.0-3、OSはUbuntu 8.04です。
>>920 多分、antのbuild.xmlで指定しているクラスパスと、
自分でテストしたときのクラスパスが違う。
build.xml見直してみたら?
>>921 ありがとうございます。build.xmlをチェックしてみます。
923 :
デフォルトの名無しさん :2008/10/07(火) 17:42:04
txt形式のファイル入出力はできるのですが、lmf形式の入出力がわかりません lmfをtxtにして入力しても、文字化けのままです。 目的はlmf形式のファイルを文字化けせずに表示することです。 どなたか教えてください。
中身の形式の判らないファイルを読み書きすることは出来ない まずそのファイル形式の仕様を調べるところから始めろ (そしてそれはJavaと関係ないのでここでは訊くな)
925 :
デフォルトの名無しさん :2008/10/07(火) 17:53:33
>>919 二人ともすれ違い。それと、
>>919 は回答できてたいそう嬉しいみたいだけど、その偉そうな言い方は一体何様のつもり?
>>919 つい答えられるからといって、あなたがそういう風に回答すると質問者は調子に乗るだけだし、それよりも適切なスレに誘導してそっちのスレでやった方がよかたんじゃないですか?
私も、あなたの余計な一言によってスレが荒れるのは見たくありません。もうそういう自分勝手なことを言うのは止めてもらえませんか?
927 :
デフォルトの名無しさん :2008/10/07(火) 18:03:27
StringBufferクラスのコンストラクタについて質問なんですが、 ドキュメント見ると以下の3つしかない StringBuffer() StringBuffer(int length) StringBuffer(String str) StringBuffer(StringBuffer sbuf) ↑ これが無いのが不思議なんですが、でも使うとコンパイル普通に通る。 これって使っていいの?
StringBuffer(CharSequence seq) もあるよ。最新のドキュメントを参照すべし。
929 :
デフォルトの名無しさん :2008/10/07(火) 18:18:36
>>919 >AWT_SWTはほとんど触ったこと無いけど、
って知ったかだろ?wそれも自尊心だけ人一倍で笑えるww
930 :
デフォルトの名無しさん :2008/10/08(水) 01:19:50
初書き込みですいません。 現在FreeTTSを使って音声合成のプログラムを作っているのですが、 Windowsで、コマンドプロンプト上でのコンパイルが終わった後、いざ実行するとき Exception in thread "main" java.lang.NoClassDefFoundError: xxxxx Caused by: java.lang.ClassNotFoundException: xxxx at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) という形のエラーが出ています。この場合どうすればいいのでしょうか? eclipseで実行する場合はなぜか実行できました。
インスタンス化されたオブジェクトの中のプリミティブ型の変数と値は ヒープ領域とスタック領域のどっちに格納されるんですか?
>>930 たぶんクラスパス。
それより、TTSとか多少特殊な技術になると日本語の情報はあまりないから英語のWebに頼ることが多いんじゃないか?
そのエラーも理解できないなら、まずは英語の勉強をしたほうがいいかもしれない。
933 :
デフォルトの名無しさん :2008/10/08(水) 10:27:02
>>932 了解です。
クラスパスのエラーというのはわかっていたのですが、java.net.*とかのクラスはプログラムでは一切使用していないため
なんか別の原因かと思ったのですが・・・もうすこし英語勉強してきます。ありがとうございました。
java.net.*はパッケージで、ここでいうクラスパスじゃないな。 外部パッケージのTTSパッケージをインストールして、そのパッケージのクラスパスを通すことを学んだらどうだ?
>>934 一応javac のときに
javac -classpath c:\freetts.jar xxxx.java
という形でコンパイルはできます。
ただ、その後にいざ実行する際
java -classpath c:\freetts.jar xxxx
とやると上記のようなエラーが返ってきたのですが・・・
このちなみにTTSパッケージ内ではjava.net.*はありません。rt.jarで、設定されているのですが・・・
インターネットの接続を強制的に遮断するプログラムをJavaで作りたいんですが どういった操作が必要になってきますか?
938 :
デフォルトの名無しさん :2008/10/08(水) 12:18:29
socket.disconnect(); socket.close();
>>930 実行する時
.classまで入れてるんじゃない?
java ***.class じゃなくて
java ***
940 :
917 :2008/10/08(水) 14:41:55
>>919 氏
なるほど、参考にしてみます。回答ありがとうございました。
>>918 氏
SWTのShellですね。俺もよくわからんです。
んじゃま、卒研のためにがんばってきますです。
javaコマンドに渡すのはファイル名じゃなくてアプリケーションクラス名だぜって事だな。
942 :
デフォルトの名無しさん :2008/10/08(水) 16:02:10
>>940 おまえ、スレ違いなんだよ。担当教授に聞けよw
高い授業料払ってんだろwwおまえは三流大以下のバカか?
>927-928 ちなみに 1.4.2 だと「シンボルを解決できません」。
>943 因みにも何も、@since 1.5 だもの。
ビットとキューの扱いに関する質問です。 いま、ArrayBlockingQueueキューの中に Byte型変数が2つ入っています。 これを2つ取り出して結合し、 1つのshort型変数として扱うにはどうすれば良いでしょうか。 1:queue.poll();で取り出したときObject型になっている Byte変数の扱いはどうすれば良いのか? 2:[00110011][10101010]の2つを[0011001110101010]のように結合するには 一旦int型に直してビットシフト+ | 演算 をすれば良いのか?
>>946 調べて使ってみたら出来ました。
ありがとうございます。
>>939 >>930 ,
>>935 ですが、さすがにそれはしてません。
一応java xxxx とメインクラス名でコマンドを入力してます。
とりあえず、他に同じエラーで躓いてる人がいないか海外サイトで調べてみます。
>>946 です。
ビットシフト後の数値を検算してみたら間違っていたので、
ビットシフトに関してもう一度質問させてください。
Byte byte1;
Byte byte2;
int sr = 0;
sr = sr << 32;
byte1 = queue.poll();
System.out.print(byte1 + " ");
byte2 = queue.poll();
System.out.print(byte2 + " ");
sr = (byte1 << 8) | byte2;
System.out.print(sr + "\t");
のようにして計算した結果、
-14 5 -3579
のようになってしましました。
-14が [1111 0010] 、5が[0000 0101]
と考えると、[1111 0010 0000 0101]となって
+3579になると思っていたのですが、何が間違っているのでしょう?
950 :
949 :2008/10/08(水) 22:07:47
早とちりで合っていました、ご免なさい・・
951 :
949 :2008/10/08(水) 22:28:03
・・と思ったらやっぱり間違えているようです。
いくつもレス消費して申し訳ありません。
>>949 や -20 4 -5116 のように正解が出たり、
62 -14 -14 や 100 -24 -24 のように
明らかにおかしい値が出たりしています。
どこがおかしいのでしょうか?
>951 byte はシフト演算するとき、まずintとした後、計算されている。 例えば、-14 は8bitだと 1111 0010 らしいが 32bitだと 1111 1111 1111 0010 で、or は "1 と 0 は 1", "1 と 1 は 1" なわけで。
>>951 ・sr = sr << 32;
→意味ないです
・(byte1 << 8) | byte2
→まず書き方からして、int型に勝手に変換されるのは分かりますね?
例えばbyte2が-1(0xFF)だったとしましょう。
それをint型に変換すると0xFFFFFFFFとなり、byte1をつぶしてしまいますね?
よって、この場合は(byte1 << 8) | (byte2&0xFF)としてやらないとだめですね。
954 :
949 :2008/10/08(水) 23:12:36
>>952 >>953 int型に変換する際に上位ビットがどう埋まるかまで
考え至りませんでした・・
おかげで解決しました、ありがとうございます。
955 :
デフォルトの名無しさん :2008/10/09(木) 00:29:33
BMPの画素の値を配列に格納したいのですが 特定の画像だけ正しく値が取得できません。 BufferedImage image = ImageIO.read(bmpFile); int w = image.getWidth(null); int h = image.getWidth(null); int[] pixels = new int[w * h]; PixelGrabber pg = new PixelGrabber(image, 0, 0, w, h, pixels, 0, w); pg.grabPixels(); int[] r = new int[w * h]; int[] g = new int[w * h]; int[] b = new int[w * h]; for(int i = 0; i < w * h; i++){ r[i] = (pixels[i] >> 16) & 0xff; g[i] = (pixels[i] >> 8) & 0xff; b[i] = pixels[i] & 0xff; } インデックスカラーの白黒(256色)のBMP画像なんですが このやり方だとだめなんでしょうか? ちなみに、デバッガで image の中身を見に行くと wraster の中には正しい画素値が格納されてます。 colorModel とかの設定が何かおかしいんでしょうか??
956 :
デフォルトの名無しさん :2008/10/09(木) 08:17:35
内容が陳腐化していない、JAVAのリファレンス本ってありますか?
957 :
デフォルトの名無しさん :2008/10/09(木) 10:33:02
今javax.swing.JEditorPaneでファイル読み込みのプログラムを某サイトからコピペして (test.rtfを)読み込んだのですが、 そのtest.rtfの中に入力した日本語が文字化けしてしまいます。 Unicodeに変換すれば良いのかとは思いますが、ググっても見つからない(わからない)のですが どうすれば解決するのでしょうか? 初心者のため、まだまだ未熟なことありますが、知恵を貸していただければと思います。 よろしくお願いいたします
>>957 その某サイトのプログラムてのとtest.rtfが無きゃ、さっぱり分からん。
どう入力してどの文字がどう化けるのかも分からん。
どうググったのかも分からん。
な〜んにも分からん。
>>958 あんたのスキルと想像力が足りないだけだろう
962 :
デフォルトの名無しさん :2008/10/09(木) 11:19:33
このスレは以前に糞に占領されて廃墟になってます。
複雑なShape3Dをマウス操作などで簡単に作ることのできるツールはないのですか?
専用ソフト買え
MikuMikuDanceをJava3Dで作成できますか?
>>955 3x3ぐらいの画像で再現させて、その本当のRGBとプログラムで取得した値を全部書き出してみろ。
出来ると思えば出来るのか?
969 :
デフォルトの名無しさん :2008/10/09(木) 11:35:42
971 :
デフォルトの名無しさん :2008/10/09(木) 11:39:43
手っ取り早く何か作りたいなら専用ソフト買え。それとも自作ライブラリを作るかのどっちか。 結局有料ソフトはライブラリの寄せ集めに過ぎないし、今は海外でも3Dライブラリの整備作業が(数年前に)始まったばかり。 アニメでべた塗りの2Dもどきなら、そんなに難しくないし、3Dのライブラリもある程度そろってきたから、ミク程度の動きなら出来るんじゃないかと思う。 今はまだ早いけど5年後ぐらいなら3DのUIとか当然になるんじゃないか?
>>969 java RTFEditorKit 日本語 でググると文字化けに関するのがかなり出てくるぞ
3Dのグリグリよりは、3Dで作る擬似2Dの方が今のPCのハード性能から見ても丁度いいし、細かな制御いらないから何より作りやすいし、数年はこの流れが主流なんじゃないか? クラッシュバンデグーとか懐かしいな・・・
アプリケーションに3DがいらないことはVistaが証明してくれた
975 :
デフォルトの名無しさん :2008/10/09(木) 11:57:18
>>974 3Dの有用な使い方がなく、今でも必要ないだけ。つまり、おまえが無能とういこと。
有能ですが何か?
979 :
デフォルトの名無しさん :2008/10/09(木) 12:27:00
Java3Dの奴ら一緒に使いやすいライブラリ作ったら、俺が使ってやるw
>974-975 Vistaは全然Aeroを活かせてない 本来は凄く便利なことが出来るのに凄く勿体ないよ Compizは比較的利点を活かしてるが、それでも模索中って感じはするね 便利な機能と一発屋な機能が入り混じってる
981 :
デフォルトの名無しさん :2008/10/09(木) 13:03:03
おまえはなんでもかんでもmicrosoftに求めすぎw だから肥大化したんだろうけど、いくら有能でもMSは傲慢だから嫌われるww
982 :
デフォルトの名無しさん :2008/10/09(木) 13:08:04
>>980 ならwin32/Vista/Aeroの機能をコールするだけのブリッジ・ライブラリを作ってくれ。
windowsのような新興宗教には興味ないからMSDN読みながらJNIとか面倒だし、そこまで便利だというなら俺が使ってやる。・・・といってもwindows自体はライブラリのでかいのであって、3Dの基本機能は同じだしJOGL/Java3Dでいいよ。
984 :
955 :2008/10/09(木) 22:28:14
>>966 IrfanView や PhotoShop で読み込んだ画素値
48, 90, 43, 93, 48, 92, 49, ...
Java のプログラムで読んだ画素値
120, 160, 114, 163, 120, 162, 121, ...
灰色画像なので RGB値は同じです。
985 :
955 :2008/10/09(木) 22:35:58
987 :
955 :2008/10/10(金) 00:08:36
>>986 8bitビットマップ
に該当するのはわかっています。
実際、バイナリエディタで内部を見ると
パレットのところに
00 00 00 00 01 01 01 00 02 02 02 00 ...
と 0 〜 255 の灰色が格納されています。
画素のところは 30 なので 48 が画素値
パレットは 30 30 30 00 なので、(R, G, B) = (48, 48, 48) (10進)
になるのが正しいはずです。
しかし、955 のコードで読み込むと 120 になってしまいます。
これって、自分で 8 bit ビットマップかどうかを判定して
うまくやらないといけないんでしょうか??
988 :
デフォルトの名無しさん :2008/10/10(金) 00:11:11 BE:313955892-2BP(1000)
Write once 有名な Java ですが、 本当にJavaで書けばWindowsでもMacでも動くアプリケーションがつくれますか?
989 :
デフォルトの名無しさん :2008/10/10(金) 00:17:51
>>988 できるけど、
OSやJVMのベンダーによって挙動が変わるAPIもあるし
作った後に他プラットフォームでも動作確認はしとくべき。
991 :
デフォルトの名無しさん :2008/10/10(金) 00:42:55
Write Once, Test Anywhere
992 :
デフォルトの名無しさん :2008/10/10(金) 00:43:24
というか、Java以外にマルチプラットで(普及してる)言語なんかあるんですか?(Cはプリプロセスあるからだめですよw)
java以外だと動的言語ばっかりになるね。
994 :
デフォルトの名無しさん :2008/10/10(金) 01:04:50
javaとjrubyでscript rubyでjvm bytecode class file が出来るから、もうほとんど用が足りる世の中になった。 サル程度の仕事は、昔はperlとかだったけど今じゃjavascriptじゃないか?
996 :
デフォルトの名無しさん :2008/10/10(金) 03:37:27
次スレ
997 :
955 :2008/10/10(金) 07:47:06
>>995 マジですかー
私の環境だと 120 になるんです。。。
998 :
デフォルトの名無しさん :2008/10/10(金) 08:37:27
2get
999
1000ならザーメン1000メートル飛ぶ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。