[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 08/06 13:20 / Filesize : 292 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者】Java質問・相談スレッド102【大歓迎】



1 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:21:29 ]
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド101【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1177938653/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

次スレは>>980あたりで。

321 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:35:09 ]
>>316
そう。printf()は1.5以降。

int i = (int)b;
if (i < 0) i += 256;
String s = Integer.toHexString(i).toUpperCase();
if (s.length() == 1) {
s = "0x0" + s;
} else { // s.length() == 2
s = "0x" + s;
}
System.out.println(s);

あたりをどうぞ。

322 名前:デフォルトの名無しさん [2007/06/09(土) 17:55:03 ]
JavaでWindowsのペイントのようなソフトを作りたいのですが、

参考になるお勧めの参考書・サイトありますか?

323 名前:310 mailto:sage [2007/06/09(土) 18:22:49 ]
>>319
>>321
できました。ありがとうございます。

324 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:37:42 ]
>>322
「お絵かき java」で検索

325 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:50:32 ]
>>313
書のタイトルとページ数を書け。
もっているヤシがいるかもしれない。
その上でソースをあげてくれよ

326 名前:312 [2007/06/09(土) 19:00:26 ]
>>315
ありがとうございます!
エラーが5やら2で帰ってきて(作業ディレクトリ?)作業が難航していますが
そのソースをモトに進めたいと思います!

327 名前:デフォルトの名無しさん [2007/06/09(土) 20:06:36 ]
たぶん FAQ だと思うのですが、
整数を16進数表記に変換するには
Integer.toHexString(i); とか
Integer.toString(i, 16); とか
があるとのことで、
byte[] b = {0x40, 0x24, 0x31, 0x08};
for(int i = 0; i < b.length; b++) System.out.print(Integer.toHexString(b[i] & 0x0FF));
とすると、
4024318
になってしまって 0 が抜けてしまいます。
CharacterEncoder ce = new HexDumpEncoder();
System.out.print(ce.encode(i));
も試してみたのですが、こちらは余計なものが付いてしまいます。
なんかすっきりした方法はあるのでしょうか?


328 名前:デフォルトの名無しさん [2007/06/09(土) 20:13:44 ]
for(int i = 0; i < b.length; i++)
System.out.print((b[i] < 0x10 ? "0" : "") + Integer.toHexString(b[i] & 0x0FF));


329 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:20:20 ]
あ、byte か。

for(int i = 0; i < b.length; i++)
System.out.print(((b[i] & 0x0FF) < 0x10 ? "0" : "") + Integer.toHexString(b[i] & 0x0FF));




330 名前:デフォルトの名無しさん [2007/06/09(土) 20:21:31 ]
>>328
さっそくありがとうございます!!
でもなんか昔の BASIC のコード見てるみたいでぜんぜんすっきりしないんですけど


331 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:44:45 ]
System.out.print(Integer.toHexString(b[i] & 0x0FF));

System.out.printf("%02X", b[i]);
でだめ?

332 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:04:34 ]
>>331
327じゃないけど
sprintfみたいな機能ならあるとうれしい

333 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:18:48 ]
>>328=329
Integer.toHexString(b[i] | 0xffffff00).substring(6) とか。

334 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:23:06 ]
せっかくPrintStreamにprintfが付いたのに
PrintStreamがOutputStreamだからStringに持って来れん
これだからJavaは使えん糞だと言われるんだよなぁ


335 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:38:25 ]
>>334
String.formatメソッドとかFormatterクラスをよく調べてみたことある?

336 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:51:55 ]
PipedOutputStream po = new PipedOutputStream();
PipedInputStream pi = new PipedInputStream(po);
PrintStream ps = new PrintStream(po);
for(int i = 0; i < b.length; i++)
ps.printf("%02X", b[i]);
byte[] bo = new byte[100];
int len = pi.read(bo, 0, 99);
String s = new String(bo, 0, len);
System.out.println(s);


337 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:55:55 ]
すみません。HelloWorldのクラス化でいきなりもうダメぽです。
↓のようなプログラムを書いたのですが、printlnの("の部分がコンパイル通りません。
なんかIDがありませんと言われてしまいます。何故でしょうか?意味が・・・

public class UserInput {
  System.out.println("Hello World");
}

public class MyJavaTest {
  public static void main(String args[]) {
    UserInput();
  }
}

338 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 22:00:36 ]
>>336
byte[100] ってなんだよw


PipedOutputStream po = new PipedOutputStream();
PipedInputStream pi = new PipedInputStream(po);
PrintStream ps = new PrintStream(po);
for(int i = 0; i < b.length; i++)
ps.printf("%02X", b[i]);
ps.printf("\n");
BufferedReader br = new BufferedReader(new InputStreamReader(pi));
System.out.println(br.readLine());


339 名前:327 [2007/06/09(土) 22:05:07 ]
>>335
できました!

String s = "";
for(int i = 0; i < b.length; i++)
    s += String.format("%02X", b[i]);
System.out.println(s);

激しくありがとうございました!!!




340 名前:デフォルトの名無しさん [2007/06/09(土) 22:12:24 ]
なんだか予想以上にメモリを食うのですが、

staticで作った変数はインスタンスを生成するごとに、
メモリ食うってことはないですよね?

インスタンスへのポインタ?みたいなものは、
何バイトくらいメモリ食うのでしょうか?

341 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 22:21:40 ]
環境依存では

342 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 23:03:43 ]
>>340
オブジェクトヘッダはVM依存だね。

343 名前:313 mailto:sage [2007/06/09(土) 23:09:51 ]
>>325
レスありがとうございます。
色々やってたら無事コンパイルできました。
1行目も本に載ってたimport mybeans;のままでできました。
クラスパスなども修正したので、結局何が原因だったのかよく分かりませんが、
やはりサーブレットをコンパイルする場所(ディレクトリ)が問題だったようです。
因みに本は高橋麻奈さんのやさしいJava活用編第2版で、
問題の箇所はレッスン7のサンプル6でした。
お陰さまで助かりましたありがとうございました。
お騒がせして申し訳ありませんでした。
失礼しましたm(_ _)m

344 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 23:44:57 ]
>>337
プログラム勉強するの辞めたほうがいいと思う。
どういう本で勉強しているのか、どういう授業を受けているのかは知らないけど、人の話も聞いていないし理解しようともしてないでしょw

何故か?
クラスに定義できるのは、メソッドと変数だけだから。
で、命令文(ステートメント)はメソッド(コンストラクタを含む)にしか記述できない。

345 名前:312 [2007/06/09(土) 23:52:59 ]
JAVAからwindowsのバッチファイルを引数を渡して起動の質問をした者です。
ProcessBuilderから引数を渡してバッチを起動するところは成功しました。
(環境変数のPATHに起動したいバッチのパスを入れた)

しかし、バッチファイルの途中で処理が止まって、エラーも出ずに処理が止まってしまいます。
具体的に、バッチファイルの中でLhacaを使ってファイルを解凍をしている作業があるのですが、そこで止まってしまうようです。(getInputStream()で確認)
Lhacaも環境変数に入ってますし、コマンドラインから単体で実行した時は問題なく動くのですが・・・。

偉い方、ご教授願いますm(_ _)m

346 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 23:53:52 ]
>>337
クラスじゃなくてクラスのなかにあるメソッドを呼ばないとダメ

public class UserInput {
 public void sayHello(){
  System.out.println("Hello World");
 }
 public void sayAny( String text ){
  System.out.println( text );
 }
}

public class MyJavaTest {
  public static void main(String args[]) {
    UserInput userInput = new UserInput();
    userInput.sayHello();
    userInput.sayAny( "aaa" );
    userInput.sayAny( "zzz" );
  }
}

347 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 23:57:19 ]
>>346
教育している側から言えば、出題の意図はコンストラクタに記述、だと思う。
クラスの理解は、コンストラクタ⇒変数⇒メソッドかな。
メソッドの引数(特に参照型)は最初は教えちゃダメダメ

348 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:03:58 ]
>>347
ごめん。>>344>>337だけ読んでレスした。
もっと前からやりとりがあったんかな?
少し上のほう読んでみたけど確認できなかった。

349 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:08:56 ]
>>348
いや、単発だから回答としては問題ないと思うよ。
ただ、そう書いても>>337は理解できないと思うが・・・
ここは質問・相談スレであって丸投げじゃないからと、言い過ぎた。
すみません。



350 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:09:28 ]
>>345
Lhacaを入れていないから分からないけど、Lhacaが何か入力を求める場面とかない?
もしくは解凍ファイルを正しく出せる等、Lhacaの出力先は確保されてる?
どういうところで実行が止まっているのか状況が分からないから何とも言い様が無い。
> コマンドラインから単体で実行した時
っていうのは、Lhacaを単体で実行?バッチファイルを実行?

351 名前:345 mailto:sage [2007/06/10(日) 00:25:31 ]
説明が不足していました。
> コマンドラインから単体で実行した時
これは、Lhacaでの解凍を組み込んだバッチファイルでの実行の事です。
具体的に、以下のようなコマンドを発行しています。
lhaca "C:\Program Files\eclipse\workspace\aaa\bbb\ccc.lzh"

バッチファイルの実行では、自分が指定したディレクトリに解凍されたファイルが想定通り出力されます。

よろしくお願いします。

352 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:38:06 ]
>>345
なんだっけな、昔似たようなことで嵌ったような・・・
バッチファイルを実行させるのは無理とかそんな結論だった気もするけど、ちょっと覚えてないわ。
バッチファイルをCあたりで1個のexeにして解決したと思う。

353 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:38:28 ]
>>351
止まってしまう、というのは異常終了するということ? フリーズするということ?
あと、エラーも出ずに、というけど、標準エラー出力はgetErrorStreamから取らないと。
まあ、標準出力と標準エラー出力のどちらに出すかはプログラム次第なんだけど。
エラーを出す前に固まったら関係ないしね。
プロセスが使用する作業ディレクトリとか環境変数とかは、
ProcessBuilderでstartする前に、ProcessBuilderのメソッドで設定することができるので、
バッチファイル単体で実行した時と同じような環境を整えてやってみて。

354 名前:デフォルトの名無しさん [2007/06/10(日) 01:00:30 ]
本の通りにやったのですがエラーが出てしまいます。
floatをdoubleに変えると問題ないのですが、floatは使えないんでしょうか。

精度が落ちている可能性
検出値: double
期待値: float
a = 2.0;
エラー 1個

//Exercise.java

class Exercise {
public static void main(String args[]) {
float a;

a = 2.0;
System.out.println("変数aの値は" + a + "です");
}
}


355 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:04:22 ]
情報処理技術者試験向けのJAVA言語の必勝勉強方法とかあったら教えてください^^

356 名前:345 mailto:sage [2007/06/10(日) 01:12:03 ]
>>352
cでそんなことも出来るんですね!
難しそうですね〜・・・

>>353
getErrorStreamを組み込んでみましたが、何も出ていないようです。

Process p = new ProcessBuilder("wgetdata.bat","2006","06","06","06").start();
InputStream estream = p.getErrorStream();
InputStream stream = p.getInputStream();
while (true) {
int d = estream.read();
if (d == -1) {
estream.close();
break;
}
System.out.print((char)d);
}
while (true) {
int c = stream.read();
if (c == -1) {
stream.close();
break;
}
System.out.print((char)c);
}
これだと何もエクリプスのコンソールには出ませんでした。
getInputStreamを先に取り出すようにすると、バッチの途中までが出力されます。
バッチの途中でフリーズしているようです。
作業ディレクトリ、環境変数の設定はしていないので、明日あたり取り組んでみたいと思います。

357 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:29:56 ]
>>354
なんて本?
Javaでは、「2.0」のように小数点を数値リテラル(定数)として記述した場合、doubleとして扱われるのが仕様。
なので、doubleをfloatに変換していると見なされコンパイラが警告を出す。

型を指定して小数を書く場合、2.0F, 2.0Dと後ろに型を現す識別子を記述すること。
同じように12桁ほどの整数だとintと見なされlongにいれられない。
この場合はLを後ろにつける。
f,d,l など小文字でもOKだが、lと1が見分けつくにくいので大文字推奨。

358 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:36:09 ]
>>357
thx

世界でいちばん簡単なJava

359 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:37:27 ]
>>357
おおお2.0Fとしたらいけた
ありがたや〜



360 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:40:32 ]
>>358
その本、地雷の中の地雷。
やさしいJavaが良書に思えるほど。

361 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:42:45 ]
>>360
そうなのか・・・

わざわざ買いなおしたのに・・・


362 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:44:16 ]
>>354
a=2.0f;

っていうかその本は捨てたほうがいいかも。
ずっと前にも2chスレに同じような質問があった気がする。

うわー。教えてgoo!とかにもあるなあ。
oshiete1.goo.ne.jp/kotaeru.php3?q=2153924
www.temptech.co.jp/others/java_qa/2020.html

その本ってもしかして
  世界でいちばん簡単なJava の e 本Java の基本と考え方がわかる本
  2003年6月1日 第1版第1刷発行 著者 堀江幸生
  発行 株式会社秀和システム (ISBN4-7980-0533-9 C3055)
  www.amazon.co.jp/dp/4798005339/
じゃねえか?

pc8.2ch.net/test/read.cgi/tech/1161492130/964-981
改訂されてないみたいだね。

363 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:46:35 ]
>>362
あああゴミなのかこの本

昨日からやる気出して取り組んでるのにヽ(`Д´)ノ
研究室の金だからいいけどさ・・・



364 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:54:41 ]
>>362
てかgooではない方のQ&Aも間違ってるじゃねーかw

365 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:57:00 ]
>>356
lhasaとかtarだと問題なく処理されて正常終了するなあ。
Lhaca自体の問題なのか、実行環境の問題なのかね。
ところで、名前からみてwgetで取ってきたlzhファイルを解凍する処理なのかな?
zipならwgetの処理からzipの解凍までjavaの標準APIで書けるけど、
lzhだと書庫操作用のライブラリを探すなり作るなりして、全部javaで書いてしまうとか。

Process p = new ProcessBuilder("moge.bat", "hoge.lzh", "hoge.taz").start();
java.io.Reader in = new java.io.InputStreamReader(p.getInputStream());
while (true) {
int c = in.read();
if (c == -1) break;
System.out.print((char)c);
}
in.close();

moge.bat
echo %1 %2
"C:\Program Files\Lhasa\Lhasa.exe" %1
tar xfzv %2

366 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:58:11 ]
>>364
たしかにw

なんだかなー

367 名前:デフォルトの名無しさん [2007/06/10(日) 02:08:42 ]
JavaのソースコードでSQL文を書く時
Stringにまとめていれるほうがいいのか
StringBufferに一行ずつ書いて後でStringにするのがいいのか
メモリ上の問題とかも考えて
どちらのほうがいいのでしょうか?

Stringに入れた場合、SQLに入れる変数が大量にある場合、見づらくなる気もしますが


368 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:19:47 ]
>>340
Instrumentation#getObjectSize

369 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 03:10:16 ]
Java6で追加されたjavax.scriptを使いたいんだけど、
第三者によって書かれたスクリプトを安全に実行したいんです。
JavaScriptからでも普通にJavaのAPIにアクセス出来てしまうのですが、
これを禁止する方法はあります?



370 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 07:53:26 ]
>>367
動的SQLか静的SQLかにもよるけど。
静的SQLの場合、定数として宣言するのが定石。
この時、書き方としては+で連結して書いて何も問題ない。
コンパイラがコンパイルする時に、最適化して1つの文字列としてくれるから。
読みやすさを重視して、1行ずつ改行してインデントきって+連結。

静的SQLの場合、やはり定数として宣言して?を使ったPreparedStatementで使用するのが良い。
もっと複雑なSQLを構築したい場合は、動的にSQLを作成するけど、そういう場合はStringBufferを使用するほうが好ましい。

ただ、どちらにせよコードに定数としてSQLを書くよりも、SQLは外部のテキストファイルか何かで管理する方がベスト。
複雑なSQLを動的に作成する必要がある場合、本当に必要かを検討し、静的SQLの組み合わせで処理できないかを考えるべし。
この辺りは3層構造とかの記事でも読んで。

371 名前:356 mailto:sage [2007/06/10(日) 08:11:18 ]
>>365
書庫操作ライブラリの自作ですか!
たくさん勉強が必要そうですね。

まさにwgetでデータを取ってきて解凍する処理です。
lhasaとかtarなら正常終了したのですね?
次に試してみます!ありがとうございます。

372 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 08:22:54 ]
>>369
「第三者によって書かれたスクリプト」が安全なわけないだろ

373 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 09:33:31 ]
>>369
空の javax.script.SimpleBindings とかでグローバルスコープ上書きすれば
アクセスできないようにならん? とか思ったけど、Rhinoには通じないみたい。
で、ちょっと方向変えて

ScriptEngine engine = new ScriptEngineManager().getEngineByName("rhino");
Bindings b = engine.getBindings(ScriptContext.GLOBAL_SCOPE);
b.put("java", new Object());

みたいにするとパッケージの根元から潰したり、同じ事やれば、
デフォルトで Object とか System とか Thread とか潰したりはできそう。
どのクラスを使って良くて、どのクラス使っちゃダメってのを個別に制御しようとすると面倒臭そうだけど

374 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 10:36:39 ]
>>371
漏れも調子に乗って既存のlzh系処理ソフトにラッピングする形で
自前の書庫管理してたんだけど途中で書庫サイズが2GB超えて
ぼろぼろになって原因がそっちにあるのが分かってやる気なくした

自分でライブラリ作った方が安心出来るよ



375 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 11:51:23 ]
>>372
今ご覧になってるWebブラウザは第三者が書いたJavaScriptを安全に実行しているわけで。
>>373
全部のパッケージ潰せて、わずかな安全な自前の関数だけScriptEngine#put()できればとりあえず使いものになります。
java、javax、com、orgあたりを潰せばjava seのapiすべて潰したことになるのかな?潰し忘れがあったらかなりデンジャラス。
あちこちドキュメント漁ってるんだけど、なんでこんな大事なことどこにも書いてないんだろう。
でもとりあえずありがとう

376 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 12:55:05 ]
>>375
どうしてJavaScriptでローカルのディスクに書き込めないのはなぜ?


377 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:13:52 ]
>>375
アプレットでも使われているけど第三者のクラスファイルを安全に実行する
既存のモデルを使う。Javaのセキュリティモデルを勉強すること。
あとjava.sun.comにドキュメントあるよ。JavaSEのドキュメントのページからリンク
はられてる。

378 名前:デフォルトの名無しさん [2007/06/10(日) 13:35:55 ]
すいません。 誰か教えてください。


DoJa-3.5用(900用)のエミュレータを使ってHelloWorldを出すという、初歩の初歩でつまずいてるのですが、ビルドを実行すると

javac:ターゲットリリース1.1がデフォルトのソースリリース1.5と競合しています。

とでて、ビルドが失敗してしまいます。
どうすればよいのでしょうか? Javaスレの神様どうかお教えください。お願いします。

379 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:41:09 ]
>>378
こっち
pc11.2ch.net/test/read.cgi/tech/1174036396/




380 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:42:32 ]
と思ったら既にマルチしてたのね

もう回答は期待出来ないな

じゃ


381 名前:デフォルトの名無しさん [2007/06/10(日) 14:12:23 ]
すいません。 マルチはダメなんですね。ごめんなさい。
sun.tools.javac.Mainを使用するをチェックしていないのが原因でした。
回答が期待できないといわれたので、別の方法で考えました。 自分で考えたほうが身につきますね。ありがとうございました。

382 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 14:39:17 ]
昨日Image関連で質問した物です。回答ありがとうございました。

回答いただいた内容で解決できたのですが、新たな疑問点が。

Imageをクラス間でやりとりすることは不可能なのでしょうか。
メンバにImageを持たせ、paintにて描画した後、
他クラスからそのImageを取得しようとしたところ、
Paintメソッド内では存在してましたが他クラスから呼び出した時点でnullになっていました。

3DのCUBEを乱数に寄り平行移動させた物を複数生成し、
1クラスにつき一つのCUBEをImageに描画させ、
のちに統合したImageをCanvasに描画するという手順を取っているのですが、
Imageのやりとりが出来ないとなるとこの手法が使えません。
ご教授宜しくお願いいたします。

383 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 14:43:12 ]
static

384 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:17:31 ]
Java2ME環境で質問です。
ネットワーク上のNetBIOS名を列挙したい場合はTCP/UDPから上の部分をすべて自前で実装する以外ありませんか?

JCIFSというライブラリはありますが、LGPLなので手が出しづらいです。
スレ違いになりますがjarからclassファイルを取り出して使用した場合はソースを公開する必要があるのかないのか
分かる方はこちらも教えていただけると幸いです。

385 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:28:03 ]
>>371
lhasaはいいとして、lzhを扱えるtarはないと思うので念のため。
サンプルでtarが展開しているのはtar-ballをgzipで固めたtazファイル。
ProcessBuilderで呼び出したバッチファイルで、
ファイルを生成するプログラムがうまく動作しないとかだといやだなあと思って確認しただけなので。

Lhaca自体の問題というより実行環境の問題の気がしなくもない。
eclipseから起動しているのが原因とかかも。
バッチを呼び出しているjavaプログラムを直接コマンドラインからjavaコマンドで叩いた場合はどうなる?

386 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:45:00 ]
>>384
そのjarのライセンスに従ってください

387 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:32:42 ]
>>377
JDKドキュメントのセキュリティの項は目を通してみているけど、さっぱりわからない。ムズ過ぎ……

>>現在、SDK の一部として提供されているコードはすべてシステムコードと見なされて、固有のシステムドメインの中で実行されます。
>>システムコードには、自動的にすべてのアクセス権が与えられます。

とか書かれてるけど、javax.scriptはシステムコードですべてのアクセス権が与えられてて制限は出来ないってこと?

388 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:52:35 ]

public class a{
public static void b(int foo){
System.out.println("Int");
}
public static void b(byte foo){
System.out.println("byte");
}

public static void main(String args[]){
b(26);
}
}

mainでbyteを入れているのに、何故intが呼ばれるのですか?

389 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:07:51 ]
>>388
何故26がbyteなのですか?



390 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:10:45 ]
>>388
127以下の数だからってbyteとして扱われるわけじゃない。
Lつけなきゃ整数リテラルはすべてint。言語仕様の3.10.1参照。

391 名前:デフォルトの名無しさん [2007/06/10(日) 19:13:20 ]
データベースの中身を拾ってきて
それをCSV形式でファイルに書き出してデスクトップに落としたい場合
メモリ上にファイルを作成→一行ずWriteで書き出す→拡張子をCSVにしてデスクトップに保存する

こういうクラスを作ってやっているのですが
だいたい皆さんもこういうやり方でやっているのでしょうか?
もっと簡単な方法とかあるのでしょうか?

392 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:19:21 ]
ActiveDirectory認証を利用するAPIはありますか?

393 名前:デフォルトの名無しさん [2007/06/10(日) 19:42:06 ]
会社でJavaの引き継ぎをまかせられてしまった初心者です(35歳)。プログラミング経験はほとんど皆無(商用経験は0、社内研究でperlを少しかじった程度)。
以下のプログラムが存在した場合、「this」はどこを示すのか悩んでいます。

class TestClassB extends TestClassA{
public String doExcute(){ 処理ロジック };
}
class TestClassA{
public abstruct String doExcute();

public ActionForward excute(){
String result = null;
result = this.doExcute();
}


ログを読む限り、TestClassBをインスタンス化して、excute()をcallしているのですが、
TestClassB内には存在しないため、スーパークラスのexcute()をcallしていると読めます。
その後、excute()の中で、「result = this.doExcute();」という記述があるのですが、これは
どのような動きをしているのでしょうか。
その後の動きを見ると、TestClassBのdoExcuteを実行しているようなのですが、
具体的な動きがわらないため質問させていただきます。

@この場合、TestClassAの中でthisと宣言されているが、TestClassBがTestClassAを
 継承しているので、thisはインスタンス化されたTestClassBを示す。それなのでTestClassBのdoExcuteが実行される。

ATestClassAの中でthisと宣言されているため、明示的にインスタンス化されてはいないが
 thisはTestClassAを示すため、自動的にインスタンス化される等して、TestClassA内の
 doExcuteを実行しようとする。しかし、TestClassA内にはabstructでしかdoExcuteが宣言
 されていないので、自動的に実装しているものを探してTestClassBのdoExcuteを実行した。

感覚的には@な気がするのですが、thisはその記載されたクラス自身を示すような気がして
下のような考えと悩んでいます。すいませんが教えてください。

394 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:57:27 ]

TestClassA tca = new TestClassA();
TestClassB tcb = new TestClassB();

ActionForward afa = tca.execute();  ・・・(1)
ActionForward afb = tcb.execute();  ・・・(2)

(1) のとき this は tca
(2) のとき this は tcb


395 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:01:21 ]
>>393

class TestClassB extends TestClassA{
public String doExcute(){ 処理ロジック };
public String doExcute2(){ふが};
}
class TestClassA{
public abstruct String doExcute();
public String doExcute2(){ほげ};

public ActionForward excute(){
String result = null;
this.doExecute2();
result = this.doExcute();
}


これを実行して比べてみたら?


396 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:01:33 ]
>>391
それで何か問題あるの?
>>392
Windows固有の機能だからJavaにはなさそうだ。
>>393
もちろん@が正解。ただそのコードじゃコンパイル通らないはずだよ。TestClassAはきっとabstractなクラスだ。

397 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:05:35 ]
>>391
少しだけOO的に書くのであれば、DBから取得してきたデータをBeanクラスに詰め、Writerで1行ずつ書き出すとベター
DBから取得してきたデータをいきなりCSVの1行にするくらいならば、データ量にもよるけど、SQLで組んじゃう方が楽じゃね?

398 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:34:28 ]
>>387 セキュリティマネージャ差し換えるんだよ。

>>392 ActiveDirectoryというかLDAPなら。

399 名前:デフォルトの名無しさん [2007/06/10(日) 20:38:21 ]
>>396
問題はないけど
ちょいとアナログなやり方なので
他に方法があるのなら参考にしたかった



400 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:04:14 ]
>>393
常にTestClassBを示す

401 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:17:10 ]
>>399 == >>391
それを言うなら
アナログ
じゃなくて
アナクロ


402 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:48:39 ]
超初心者失礼します
enumを使おうと思って調べたんですが、よくわかりません
とりあえずJ2SE5.0なので言語レベルで実装されてるとは思うのですが
enum hoge{
oerjao, idos;
};
てな感じじゃだめなんでしょうか、Eclipseだと無理っぽいんですが…

403 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 22:03:54 ]
>>402
普通に使えるはず。
使えないなら以下をチェック

・eclipseのバージョン
・プロジェクトのプロパティ
  -> Javaコンパイラ
  -> Javaのビルドパス
    -> ライブラリ


404 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 22:29:46 ]
>>398
System#setSecurityManager()でセキュリティを設定するとスクリプトは安全だけど、
アプリケーション全体に制限が加わってしまってそれ以外のファイルアクセスなんかが
出来なくなっちゃうよね?やっぱりわからん…


405 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 22:36:18 ]
>>403
よくわからんのですが、コンパイラの準拠レベルとやらを5.0に上げたら通るようになりました
ありがとうございました

406 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 00:12:16 ]
>>398
その手のスクリプトってパッケージとか持ってないと思うし、
コードベースで動作制限もできないようなきがするから、
SecurityManager でやるにしても、あんまし便利には出来んと思うけど。

407 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 01:11:43 ]
>>375とかセキュリティマネージャとか言ってる奴は馬鹿だろ。
言語レベルのセキュリティとスクリプトエンジンの実装のセキュリティは別問題。
組み込みエンジンのセキュリティ確保は組み込む人間が全部自分で必要なものを1から実装する。
これは>>375の仕事。

何を何処までどうするか、それをどうやって実現するか全て自分でやる。用意されてるものを使うんじゃなくて自分で用意する。

具体例でいえば"ブラウザは外部の入力は汚染されたものと仮定してセキュリティ制限下で処理してる"
""でくくった部分を>>375が全部やる部分。
実装例だせば、ecma-262ではトップレベルコンテキストは常に一つで一切操作出来ないのが仕様だが、
ブラウザでそれやると文書間でトップレベルコンテキストが共有されてしまうから動作変更して文書毎にトップレベル生成してる。
javaの実装であるrhinoはセキュアであることは実装対象外だから一切配慮されてなくて、
セキュアな実行環境がほしい場合は組み込む者が適切に実装しろとrhinoのドキュメントにご丁寧に書いてある。
これだけ言ってわからんならノウハウ本か他のソース読め。

408 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 02:09:41 ]
バカ避けのために作られた言語なのに
どうしてバカばっかり集まってくるのはなぜ?


409 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 03:06:49 ]
それはおまいが一番よく知ってるんだぜ?



410 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 09:25:56 ]
>>407
sun.org.mozilla.javascript.internal.Context#setClassShutter() で
Javaのクラスを遮断することができることがわかった。
さすがにRhinoがセキュリティについて一切配慮されてないなんてことはなさそう。
sun.org.mozilla.javascript.internal.SecurityController もセキュリティ関連だからもっと調べてみる

411 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 12:05:20 ]
JDBCドライバを実装するのにオススメのサイトや書籍(できれば日本語)
を教えていただけませんか?

412 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 12:46:39 ]
>>411
JDBCドライバを実装するの?
JDBCドライバを使用してDBアクセスを試すんじゃなくて。
後者ならば、「JDBCによるJavaデータベースプログラミング」あたり。
やさしいのがいいってならば、どれでもいい気がする。

ドライバの実装は・・・少なくとも初心者質問スレじゃスレ違い



413 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 13:13:02 ]
>>412
ドライバの使用じゃなくて実装です。
使用法の情報は多くあるのですが実装についてはあまりみないもので。

スレ違いですか…
どこが適切なんだろうか

414 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 13:34:49 ]
>>410
そこら辺は最近追加された新しいAPIだよ。

sunのrhinoは元とは別モンの劣化品だからただ実行する以上の用途はmozilaのパッケージ使った方が良いぞ。
ドキュメントもすべて揃ってるから組み込みチュートリアルとかもあるし。
(javadocはサンプルjsコードの一部をコピペしただけ。)

悪いことは言ってないぞ?

415 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 14:29:36 ]
>>413
情報無いよな、そもそも必要に迫られるもんじゃないし。
公開されていソースが一番の情報源では?

スレは作成したいドライバのDBベンダのスレのがいいかも。

416 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 16:02:29 ]
初歩的で申し訳ないのですが、下のプログラムがコンパイルで通りません。
シンボルを見つけれませんと出るのですが、どういうことなのでしょうか?

//Info.java
public class Info {
  public void Info(){
    int num[][];
    num = new int [10][10];
    System.out.print("test\n");
  }
}

//Main.java
import java.io.*;
public class Main {
  public static void main(String args[]) {
    int i, j;
    Info a = new Info();

    for(i=0; i<10; i++) {
      for(j=0; j<10; j++) {
        System.out.print(a.num[i][j]);
      }
      System.out.println();
    }
  }
}

417 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 16:07:28 ]
>>416
//Info.java
public class Info {
  public int num[][];

  public void Info(){
    num = new int [10][10];
    System.out.print("test\n");
  }
}


418 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 16:13:50 ]
>>417
ありがとうございます。しかし、コンパイルは通ったのですが、
System.out.print(a.num[i][j]);
のところでエラーが出てしまいます。どうしてなのでしょうか?

419 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 16:15:17 ]
というよりも、今気付いたのですが、コンストラクタの中の"test"って文字が表示されてないってことは、
まず、コンストラクタの中に入ってないってことですね。それはエラーも出るはず・・・;;



420 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 16:18:29 ]
public void Info()はコンストラクタではない。
ただのメソッド。
ヒント:void

421 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 16:24:11 ]
もし>>417のままにしたいなら Info a = new Info(); a.Info(); でnumを初期化






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef