5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

★★Java質問・相談スレッド137★★

1 :デフォルトの名無しさん:2010/03/16(火) 10:23:04
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    ttp://pc11.2ch.net/hp/
Webプログラミング ttp://pc11.2ch.net/php/
をご利用下さい。

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

前スレッド
★★Java質問・相談スレッド136★★
http://pc12.2ch.net/test/read.cgi/tech/1265541019/

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

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
ttp://www.wikiroom.com/java/

2 :デフォルトの名無しさん:2010/03/16(火) 10:24:00
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 9
http://pc12.2ch.net/test/read.cgi/tech/1261232019/
■ SWT は --
Java 高速GUI SWT 3
http://pc12.2ch.net/test/read.cgi/tech/1164877399/

■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part20
http://pc12.2ch.net/test/read.cgi/tech/1253532993/
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 9
ttp://pc12.2ch.net/test/read.cgi/tech/1249357352/
■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 68 ★★
http://pc12.2ch.net/test/read.cgi/tech/1248012902/

■ NetBeansに関する雑談は --
NetBeans Part5【Java/C++/Ruby/Python/PHP】
http://pc12.2ch.net/test/read.cgi/tech/1247926906/
■ Eclipseに関する雑談は --
Eclipse統合M28【Java/C++/Ruby/Python/Perl】
http://pc12.2ch.net/test/read.cgi/tech/1247051216/

3 :デフォルトの名無しさん:2010/03/16(火) 10:26:00
**** 開発環境が必要の場合は ****
■ J2SE 5.0 (1.5.0)
ttp://java.sun.com/j2se/1.5.0/ja/
■ Java SE 6
ttp://java.sun.com/javase/ja/6/

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
ttp://www.java.com/ja

4 :デフォルトの名無しさん:2010/03/16(火) 11:44:20
┌┴┐┌┴┐┌┴┐ -┼-  ̄Tフ ̄Tフ __ / /
  _ノ   _ノ   _ノ ヽ/|    ノ    ノ       。。
       /\___/ヽ
    /ノヽ       ヽ、
    / ⌒''ヽ,,,)ii(,,,r'''''' :::ヘ
    | ン(○),ン <、(○)<::|  |`ヽ、
    |  `⌒,,ノ(、_, )ヽ⌒´ ::l  |::::ヽl
.   ヽ ヽ il´トェェェイ`li r ;/  .|:::::i |
   /ヽ  !l |,r-r-| l!   /ヽ  |:::::l |
  /  |^|ヽ、 `ニニ´一/|^|`,r-|:

5 :デフォルトの名無しさん:2010/03/16(火) 21:09:57
CMあけました〜

6 :デフォルトの名無しさん:2010/03/16(火) 21:36:13
前スレ997
>クラスに属さないメソッドって作れないの?

PHPやらVBみたいなグローバルfunctionや
C#みたいなデリゲートやラムダ式のこと言ってるなら無理

できて匿名クラスつくってメソッドを定義するくらい

7 :デフォルトの名無しさん:2010/03/17(水) 09:42:44
TransformerFactory が内部で XML から Java バイトコード生成するようになってくんねーかな。
これやると砂箱で動かなくなるんだっけ?

8 :デフォルトの名無しさん:2010/03/17(水) 09:43:51
×XML → ○XSL

9 :デフォルトの名無しさん:2010/03/17(水) 09:45:41
XSL ⊂ XML

10 :デフォルトの名無しさん:2010/03/17(水) 10:36:39
>>7-8
SunのJREのXSLTって中身はXalanだよね?
XalanのXSLTCは使えないんだっけ?


11 :デフォルトの名無しさん:2010/03/17(水) 18:10:27
コンパイルしてた気がするが

12 :デフォルトの名無しさん:2010/03/17(水) 22:23:11
Strutsの質問ってスレチかもですが質問させて下さい。

リソースファイルを2つ使いたくてstruts-configに下記のように記述しました。
/********************* struts-config *******************/
<message-resources parameter="ApplicationResource" />
<message-resources parameter="resources.application" key="hoge" />

でjsp側で下記のように記述して取り出そうとしたんですけど何れも上手くいきませんでした。
/************************* jsp ***********************/
<bean:message key='hoge' name='errors.Data' />
<bean:message bundle='hoge' name='errors.Data' request='scope' />

ちなみにリソースファイルの中身です
/********************* application.property *******************/
errors.Data=不正なデータです


Struts1.2を使用しているのでこのバージョンではリソースファイルを切り分けて使えないということでしょうか・・・
知ってる方いらっしゃいましたらお教えて頂けないでしょうか。


※参考にしたサイト
http://konnichiwa-dou.cocolog-nifty.com/blog/2006/06/post_3b7c.html
http://d.hatena.ne.jp/catseye88/20080116/1200487568
http://slashdot.jp/~kappatottaotoko/journal/393935
http://fireball.loafer.jp/kes/article_494.html


13 :デフォルトの名無しさん:2010/03/17(水) 23:02:28
JAXB2.2RIに入ってるサンプルのAntが通りません
<taskdef>のところで詰まってしまうのですが、教えてください
Antは1.7.1つかってます。クラスパスが通ってないことはさすがに
ないとおもいます。

taskdef A class needed by class com.sun.tools.xjc.XJCTask
cannot be found: org/apache/tools/ant/DynamicConfigurator

using the classloader AntClassLoader[D:\...略...\jaxb-api.jar;
D:\...略...\jaxb-impl.jar;
...略...
]



14 :デフォルトの名無しさん:2010/03/17(水) 23:23:50
jaxb-xjc.jarをlib.dirにおけ

15 :デフォルトの名無しさん:2010/03/17(水) 23:45:01
>>14
サンプルはJAXBのフォルダの中にはいっていまして、
サンプルのbuild.xmlではそのまま動くように相対パスでつながっています

#jaxbフォルダ
# +lib
# jaxb-xjc.jar
# *.jar
# +samples
# +class-resolver
# build.xml
# +other-sample
# build.xml

16 :デフォルトの名無しさん:2010/03/18(木) 03:32:28
>>384
うぅっ、やっぱりそうでしたか・・。
友人から種をもらったので軽い気持ちで育ててしまいましたが、
よく考えれば当たり前ですよね・・。

しかし、成体になるまで育ててしまったものを今さらどうしていいのやら・・
日曜の朝、エサを用意しわすれてでかけたら、
夜帰った時には80cm以上も移動していました・・・。

17 :デフォルトの名無しさん:2010/03/18(木) 11:01:14
http://pc12.2ch.net/test/read.cgi/tech/1217536023/
△△もっとStruts2の良さを教えてくださいSsssion6


18 :デフォルトの名無しさん:2010/03/18(木) 11:25:34
>>15
jaxb-impl.jarがlibにない。
というかググレカス。いくらでも出てくるわ。

19 :デフォルトの名無しさん:2010/03/18(木) 23:48:20
>>18
あるよ
jaxb2.2にあるlibフォルダには以下6つが最初からはいってる
https://jaxb.dev.java.net/


activation.jar
jaxb1-impl.jar
jaxb-api.jar
jaxb-impl.jar
jaxb-xjc.jar
jsr173_1.0_api.jar

20 :デフォルトの名無しさん:2010/03/19(金) 01:21:50
class A{
void a(){}
class B{
void a(){}
void b(){
a(); /**/
}
}
}
/**/の部分はBのa()が呼ばれるじゃないですか
ここでAのa()が呼ばれるようにしたいんですがどうすればいいでしょうか

21 :デフォルトの名無しさん:2010/03/19(金) 01:48:56
A.this.a();

22 :15, 19:2010/03/19(金) 03:25:20
JDK6にもともとjaxbがはいっているらしいから
ライブラリいれちゃだめなのかも・・・

23 :デフォルトの名無しさん:2010/03/19(金) 07:15:09
その辺はスマートじゃないよな。馬鹿除けにエラー出すなり、無効にしてくれればいいのに。

24 :デフォルトの名無しさん:2010/03/19(金) 09:12:34
>>21
どうもです

25 :デフォルトの名無しさん:2010/03/19(金) 09:55:35
Query query = pm.newQuery("select parametor1 ,parametor2 from "+ kurasu.class.getName());
Collection results = (Collection)query.execute();
for (Iterator i = results.iterator(); i.hasNext();){
  処理部分
}

JDOでこのように値を取得しました。
parametor1はString、parametor2はlongです。
処理部分のところにブレークポイントを設定したところ、i.nextの部分にobject[ String, long]と値が確かに入っている事が確認できました。
この二つの値を取得または書き換えたいのですが、どうすればいいのでしょうか?

26 :デフォルトの名無しさん:2010/03/19(金) 10:33:58
RMI通信ってシリアライズでデータを送ってますが、
シリアライズするとき送受信するクラスのバージョンわ合わせないといけないって聞いたことがあります。

そこで疑問ですが、
引数がString、Date、List、Mapの基本形の場合はJDKのバージョンが違うものでも
問題なくシリアライズできますか?

シリアライズでエラーになる場合というのは、JDKのバージョンじゃなくクラスの型の定義が変わったときでしょうか?

27 :デフォルトの名無しさん:2010/03/19(金) 11:36:41
>>26
やってみりゃいいじゃん
Javaのバージョンにもよると思うよ

おれならreadObjectとwriteObjectを書くよ

28 :25:2010/03/19(金) 14:23:18
Object[]でキャストしたらできた。
失礼しました。

29 :デフォルトの名無しさん:2010/03/19(金) 14:29:57
>>26
JDK のバージョンは関係ない。クラスの型定義が変わると互換性がなくなる。
JDK のバージョンアップで String, Date などの型の内部構造が変われば受信側で復元不能。

30 :15, 19:2010/03/20(土) 09:55:44
落としてきたjaxb2.2を棄ててJDKにクラスパス通したら動いた
Webの資料が古かったんだろう

31 :デフォルトの名無しさん:2010/03/20(土) 11:18:12
>>29
はあ?

32 :デフォルトの名無しさん:2010/03/20(土) 14:57:05
J2EE5を使っていますが、JavaのAPIのソースコードはどのようにすれば見られますか。

33 :デフォルトの名無しさん:2010/03/20(土) 15:34:19
昔の話題だとJ2EEにはsrc.jarは無いらしい。J2SEからなんとか移植して使う模様。
MacのJ2SEはsrc.jarが入っていないという話はあるが・・・

34 :デフォルトの名無しさん:2010/03/20(土) 19:23:41
あー、以前に探したがなかったので Win 版の src.jar 使ってステップインとかしてるかな。> Leopard
行ズレ起きまくりだが無いよりマシと何とか推測しながら見てる。

35 :デフォルトの名無しさん:2010/03/20(土) 21:14:02
すみません、質問させてください
今、Linux上でゲームを作ってるのですが、
ウインドウを最小化した後、元に戻すとキーイベントを感知してくれず無反応になります。
Windowsでは再現しない、Linux特有の物のようなのですが・・・
いろいろ調べた結果、フォーカスを失った時に一度キーリスナーの登録を消して、
またフォーカスを得た時に、キーリスナーを登録すればいいという記事を見つけ改良してみました

しかし、それでも症状は改善されません・・・
どなたか、アドバイスいただけませんでしょうか?

36 :デフォルトの名無しさん:2010/03/20(土) 21:34:47
明日ならいいお

37 :デフォルトの名無しさん:2010/03/20(土) 21:50:51
最小セットの再現コード書いてみ。
「ウチでは再現しない」で終わりそうだが。


38 :デフォルトの名無しさん:2010/03/20(土) 21:55:46
>>35
>Linux特有の物のようなのですが・・・
そんなバグあるんだね〜
もしかしたら、linuxでも他の環境だったら動くかもしれないから、
*.jarに固めてうpしてみたら?

39 :35:2010/03/20(土) 22:35:50
では、テストモデルで症状の出てる物を張り付けますね
少し長いです・・・

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Hoge extends JFrame {
public static void main(String[] args) {
new Hoge();
}

public Hoge() {
this.setSize(200, 100);
this.add(new MainPanel());

this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev) { System.exit(0); }
});

this.setVisible(true);
}
}

40 :35:2010/03/20(土) 22:36:36
class MainPanel extends JPanel implements FocusListener, KeyListener {
KeyListener kl=null;
public MainPanel() {
kl=null;
setFocusable(true);
this.addFocusListener(this);
}
public void focusGained(FocusEvent ev) {
if (kl==null) {
kl=this;
this.addKeyListener(kl);
this.setFocusable(true);
}
}
public void focusLost(FocusEvent ev) {
this.removeKeyListener(kl);
kl=null;
}
public void keyPressed(KeyEvent ke) {
//super.keyReleased(ke);
int kc=ke.getKeyCode();
System.out.printf("key:%x\n", kc);
}
public void keyReleased(KeyEvent e) { }
public void keyTyped(KeyEvent e) { }
}

41 :35:2010/03/20(土) 22:38:19
起動当初は、思惑通り動きます。
でも、一度最小化などすると無反応になります・・・

42 :デフォルトの名無しさん:2010/03/20(土) 23:00:51
>>41
これって、ウインドウをクリックすればいいだけ何だよね?
一応、コンソールに何か出力されるか見ていたけど、特に何も表示されなかった
起動した直後でも

43 :35:2010/03/20(土) 23:02:52
>>42
あれ?
起動直後、何かキー押してもコンソールに何も表示しませんでした?

44 :デフォルトの名無しさん:2010/03/20(土) 23:03:26
>>43
あぁ、ごめんキーボードを押すんだね
クリックだけしてた

コードを読んでないもので

45 :35:2010/03/20(土) 23:19:50
>>43
ウインドウを最小化した後に、またウインドウを元に戻せばいいんだよね?
その後に、エンターキーを押したら普通に動いたよ

$uname -a(の略)
Linux yamada 2.6.32-gentoo-r7 x86_64 Intel(R) Core(TM) i7 CPU 860 GNU/Linux
kde 4.4.1
sun-jdk 1.6.0.17
------------------------------------------------------------------------------------
どうでもいいことなんだけどさ、

>public void windowClosing(WindowEvent ev) { System.exit(0); }
これって、System.exit(0);は必要ないんじゃね?

>KeyListener kl=null;
>public MainPanel() {
>kl=null
3行目のkl = nullってまったく意味ないじゃん

46 :デフォルトの名無しさん:2010/03/20(土) 23:22:25
String[]の配列を重複削除するにはどうすればいいですか?
HashSetを使いますがうまくいきませんです。

String[] h1 = {"a","b","c"};
String[] h2 = {"a","b","c"};
String[] h3 = {"a","a","a"};
Set<String[]> set = new HashSet<String[]>();

set.add(h1);
set.add(h2);
set.add(h3);
set.add(h1);

System.out.println("サイズ="+set.size());
Iterator ite = set.iterator();
while(ite.hasNext()){
String[] obj = (String[])ite.next();
System.out.println(""+obj[0]+"/"+obj[1]+"/"+obj[2]);
}


これを実行すると
サイズ=3
a/b/c
a/b/c
a/a/a
になります。h1とh2が別物とされてるみたいですが、
これを回避するにはどうすればいいですか?

47 :35:2010/03/20(土) 23:27:02
>>45
見ていただいてありがとうございます
あれ?
最小化して、また戻してもうまく動きました?
おかしいなぁ・・・
Linuxでもディストリで違うのかな・・・
ubuntuだけで出るのかな・・・???

$uname -a
Linux laptop 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 05:23:09 UTC 2010 i686 GNU/Linux

その他、意味のない部分とかは・・・
症状の出る最小コードを適当に作った時のゴミが残ってたりするので
あまり気にしないでください^^;

48 :デフォルトの名無しさん:2010/03/20(土) 23:34:24
>>46
h1 != h2

49 :デフォルトの名無しさん:2010/03/20(土) 23:43:50
>>46
ああ、どうすればという話かスマソ。
デリミッタで繋いで比較か、equalsをオーバーライドして比較出来るようにした
クラスに格納して突っ込む。

50 :46:2010/03/21(日) 00:09:18
大変失礼ではありますが
大馬鹿者に教えるつもりで
御指導ねがいます。

51 :デフォルトの名無しさん:2010/03/21(日) 00:21:15
例えば、配列の順序まで比較対象とする場合は
static class Comp {
public String[] val;
public Comp(String[] val) {
this.val = val;
}
public boolean equals(Object o) {
if (!o.getClass().equals(Comp.class)) {
return o.equals(this);
} else {
Comp c = (Comp)o;
if (c.val.length!=val.length) return false;
for (int i=0; i<val.length; i++) {
if (!val[i].equals(c.val[i])) return false;
}
return true;
}
}
public int hashCode() {
return 0;
}
}
として、
set.add(new Comp(h1));
して
Comp c = ite.next();
String[] obj = c.val;


52 :デフォルトの名無しさん:2010/03/21(日) 00:39:46
また、順序や個数にかかわらず(例、{"A","B"}=={"B","A","A"}みたいに)
比較しても良いなら
static class Comp extends HashSet<String> {
public String[] val;
public Comp(String[] val) {
this.val = val;
for (String str : val) {
add(str);
}
}
}
とすることもできる。
色々な条件が考えられるので、ここでは考え方だけね。

53 :46:2010/03/21(日) 00:57:35
もっと単純にできると思ってたんですが、
力技なんですね。。。


回答頂きありがとうございましたん。

54 :デフォルトの名無しさん:2010/03/21(日) 00:59:56
>>35
他に複数のリナックス環境(ハードソフト共に)で出るかどうか確認してみては?
環境依存かもしれない。

55 :デフォルトの名無しさん:2010/03/21(日) 04:08:20
単にウィンドウマネージャのフォーカスはずれてしまうだけの様な。
全画面描画にして、ウィンドウマネージャの管理下から外れたら?

56 :デフォルトの名無しさん:2010/03/21(日) 04:53:03
その環境でシャットダウンフック正常に機能する?
するなら単にフォーカスが失われたままになってるだけだからウィンドウマネージャの問題だと思う。

57 :デフォルトの名無しさん:2010/03/21(日) 06:20:50
>>56
絶対ですか?

58 :35:2010/03/21(日) 09:01:18
う〜ん、フォーカスを得るとコンソールに文字列出すようにすると、
ちゃんと文字列出すんですよ
失う時にも、ちゃんと文字列を出します。

でも、なぜかキーリスナーだけ登録してもキーを拾わないのです・・・
この症状、誰か他にも上記のソースで出てる方います??

59 :デフォルトの名無しさん:2010/03/21(日) 10:32:35
IMなにつかってる?SCIMだと入力に問題が出ることがあるよ。

60 :35:2010/03/21(日) 10:46:50
>>59
まさしくソレ!
30分ほど前に、それに気づいて今改良してました^^;
IBusに切り替えたら、コロっと改善されました
調べていると、一応JAVAのバグっぽいですね
SCIMで対応するか、JAVAで対応するかになるようですが、
SCIMはもうメンテしてない様子・・・
JAVAの方でも、バグとして認識はあるようですが、
修正優先度の低いバグと捉えてるようですね

IBusは、「・」を打とうとすると「/」が打たれるので気に入らず切り替えてました
ありがとうございました〜
やっとゲームのシステムの開発に戻れる・・・
この、キー入力で3日悩みましたよ><

61 :デフォルトの名無しさん:2010/03/21(日) 21:01:58
開発環境を作ろうとしているのですが、J2EEとJ2SEのどちらかで迷ったら
大は小をかねるで、J2EEにしておけばいいのでしょうか?

62 :突っ込んでみた:2010/03/21(日) 22:31:01
Keep it simple, stupid!
ということで、J2ME

63 :デフォルトの名無しさん:2010/03/21(日) 22:33:58
J2EEはサーバ用途。迷う程度ならJ2SEで。

64 :61:2010/03/21(日) 23:49:03
ありがとうございます。
サーバ用途というのは、単にサーバ機上で(単体で)動作させるだけというのではなく
クライアントと交信する場合という理解でいいですか。

65 :デフォルトの名無しさん:2010/03/22(月) 00:06:24
WEBアプリ、WEBサービスのための基本的なフレームワークだからそんなもん。
ただ、Socketベースの低レベル通信(TCP,UDP)はJ2SEで。

66 :デフォルトの名無しさん:2010/03/22(月) 07:44:54
質問です
以下のコードでJTextField1の文字列をUNICODE(UTF-8)で
クリップボードにコピーすることはできたのですが、
ペースト先がShift_JISしか使えないため文字化けしてしまいます

これをUNICODEではなくShift_JISでクリップボードにコピーすることは
できないでしょうか?

Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection = new StringSelection(JTextField1.getText());
clipboard.setContents(selection, selection);

以下のように文字コード変換しようとしたのですが
うまくいかずやはり文字化けしてしまいました

try {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection = new StringSelection(new String(JTextField1.getText().getBytes("Shift_JIS"), System.getProperty("file.encoding")));
clipboard.setContents(selection, selection);
} catch (UnsupportedEncodingException ex) {

すみません、よろしくお願いします

67 :デフォルトの名無しさん:2010/03/22(月) 08:58:18
誘導されてきました。
以下のようなエラーが出ます:

>javac Sample016.java
Sample016.java:3: パッケージ javax.servlet.http は存在しません。
import javax.servlet.http.HttpServlet;

EclipseでTomcatを起動したときは問題なく動くんですけど、コマンドプロンプトからjavacだと動きません。
多分、classpathの設定に問題があるんでしょうけど、servlet-api.jarとjsp-api.jarへのclasspathはちゃんと設定されています:

>set classpath
CLASSPATH=.;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip;
C:\Program Files (x86)\Java\jdk1.6.0_17\lib\tools.jar;
C:\apache-tomcat-6.0.26\common\lib\servlet-api.jar;
C:\apache-tomcat-6.0.26\common\lib\jsp-api.jar;

スペック:
Windows XP (64-bit)
apache-tomcat-6.0.26-windows-x64.zip
jdk-6u17-windows-i586.exe
jre6

javac -cp (上記のパス) Sample016.java でも同じエラーが出ます。
…後は何を確認すればよいのでしょうか?
必要であれば補足しますので、どうか助けてください。お願いします。

68 :デフォルトの名無しさん:2010/03/22(月) 10:32:00
>>67
servlet-api.jarをC:\Program Files\Java\jdk1.6.0_17\jre\lib\extに置いたらどうかな?

69 :67:2010/03/22(月) 10:46:22
>>68
仰る通りにしたら、コンパイル出来ました!!!1!

これはどういう意味ですか?
C:\Program Files (x86)\Java\jre6\lib\ext
にはクラスパスが通っていて
C:\apache-tomcat-6.0.26\lib
にはクラスパスが通ってな・・・って、あれ?commonは?

あーっ、すみません!
C:\apache-tomcat-6.0.26\common\lib\servlet-api.jar;
じゃなくて
C:\apache-tomcat-6.0.26\lib\servlet-api.jar;
でした!
環境設定のシステム変数も訂正したら-classpathなしでもコンパイルできるようになりました。

昨晩からあの手この手を使って調べてましたが原因が分かりませんでした。
そうやって調べればよかったんですね。さすがプロです。脱帽です。
本当に本当にありがとうございました!

70 :デフォルトの名無しさん:2010/03/22(月) 16:29:57
ウィンドウズ系の開発環境から説明してあるjava本をじっくり読んでおいたほうがいいレベル。

http://pc12.2ch.net/test/read.cgi/tech/1268243411/
推薦図書/必読書のためのスレッド 55
http://pc12.2ch.net/test/read.cgi/tech/1190032149/
***Javaのオススメ入門書*** 『創るJava』 3.0
http://pc12.2ch.net/test/read.cgi/tech/1260645926/
英語の技術書読めちゃうプログラマ
http://pc12.2ch.net/test/read.cgi/tech/1256579677/
洋書推薦図書/洋書必読書のためのスレッド 1

71 :デフォルトの名無しさん:2010/03/22(月) 18:07:53
eclipseとNetBeanはどっちが人口多いんだ?

72 :デフォルトの名無しさん:2010/03/22(月) 18:11:07
eclipseだろう。

73 :デフォルトの名無しさん:2010/03/22(月) 18:16:17
eclipse java の検索結果 約 14,600,000 件中 1 - 100 件目 (0.68 秒)
netbeans java の検索結果 約 3,530,000 件中 1 - 100 件目 (0.74 秒)
もうちょっと頑張りましょうレベル。まだまだ比較にならない。
せめて2倍差くらいまで詰め寄らないと。

74 :デフォルトの名無しさん:2010/03/22(月) 18:19:23
netbeans java に一致する日本語のページ 約 535,000 件 (0.36 秒)
jdeveloper java に一致する日本語のページ 約 332,000 件 (0.54 秒)
だから、オラクルががんばっても日食の猛威は崩せないだろうね。

75 :デフォルトの名無しさん:2010/03/22(月) 18:21:03
java の検索結果 約 234,000,000 件中 1 - 100 件目 (0.59 秒)
C# の検索結果 約 45,800,000 件中 1 - 100 件目 (0.65 秒)
JavaとC#も比較にならないなぁ。実はC#派だったりするんだが・・・


76 :デフォルトの名無しさん:2010/03/22(月) 18:24:49
>>74
それ、日本語のページを検索になっとる・・・
jdeveloper java の検索結果 約 623,000 件中 1 - 100 件目 (0.43 秒)
jbuilder java の検索結果 約 1,010,000 件中 1 - 100 件目 (0.56 秒)

77 :デフォルトの名無しさん:2010/03/22(月) 21:48:55
俺はnetbeans派だけどね
まぁそんなのどうでもいいけど

78 :デフォルトの名無しさん:2010/03/22(月) 21:55:46
NetBeansは資料が少なすぎるんですけど
先輩からEclipse薦められたけど、業務で使う場合IDEは選べるの?

79 :デフォルトの名無しさん:2010/03/22(月) 22:18:39
>>77
でもさ、NetBeansって超モッサリしてない?
Eclipseに移行したくなってきたわ

80 :デフォルトの名無しさん:2010/03/22(月) 22:22:53
>>79
だ・か・ら!PCの性能が低すぎるんだってば!

81 :デフォルトの名無しさん:2010/03/22(月) 22:31:40
>>79
NetBeansでモッサリしてるなら、
エクリプスもモッサリしてる。

82 :デフォルトの名無しさん:2010/03/22(月) 22:39:50
エクリプスって8年前からぜんぜん進化して無いだろ。エクリプスってそんなにいいか?

83 :79:2010/03/22(月) 22:57:43
>>80
普通にcore i7 860を使っているんだけど
不必要な所は入れてないけどね

>>81
それでも、少しはEclipseの方が軽いじゃん

84 :デフォルトの名無しさん:2010/03/23(火) 00:12:54
だからNetBeansはGUIデザインしてこそ真価を発揮すんの。
逆にコードバリバリ書くならEclipse一択なわけ。
どっちも大事なんだよ。

85 :デフォルトの名無しさん:2010/03/23(火) 00:22:52
GUI くらい手で書けよ。

86 :デフォルトの名無しさん:2010/03/23(火) 00:39:02
visual basic経験者なんだろ。
win32apiじゃ駄目とか。

87 :35:2010/03/23(火) 00:55:43
この前、このスレで質問した者です
いろいろアドバイスもらったりしてすごく助かりました。

そして、やっと作っていたゲームが完成しました^^

http://toku.xdisc.net/cgi/up/qqq/nm21949.zip

ぜひ見ていただいてご感想ください〜
ソースも同封してますので、お時間ある方はアドバイスいただけると助かります^^
さて、がんばって次のゲーム作るお!

88 :デフォルトの名無しさん:2010/03/23(火) 01:52:04
GUI手で書けとかどこの素人だよw
そんな機械作業に工数割くわけねーだろ

89 :デフォルトの名無しさん:2010/03/23(火) 01:53:40
トラブル対応まで考えりゃ当然手書きだろ。
どこの素人だよ。

90 :デフォルトの名無しさん:2010/03/23(火) 02:10:23
>>87
おお、良いんじゃね。Mac OS X で動いてるよ。
2000 年頃にこういうドラクエU風 RPG 型仮想空間 SNS 作ろうとして挫折したなー

91 :デフォルトの名無しさん:2010/03/23(火) 02:45:15
マカってホント情報弱者だな。

92 :デフォルトの名無しさん:2010/03/23(火) 02:55:48
バカが炙り出されたw

93 :デフォルトの名無しさん:2010/03/23(火) 03:04:26
なんかすごい寂れてるな

>>87
起動して速攻死んで戸惑ったw
プレイしただけだけど結構完成度高いと思った。
柵に触ると死ぬのはファミコンゲームみたいでいいなw

94 :デフォルトの名無しさん:2010/03/23(火) 03:09:32
で何点取ったら脱ぐんだ?

95 :デフォルトの名無しさん:2010/03/23(火) 03:47:06
素人の趣味でやるプログラマーとして、

いくつかのファイルに分けてプログラミングすることに
あこがれる

ファイル拡張子が
MF、SF、DSAとか
いっぱいあるけどなんだろうな〜と思ってみたり
classもいっぱいあるし

あれができるようになるのに、
お勧めの書籍ありますでしょうか

javaに限らず)

96 :デフォルトの名無しさん:2010/03/23(火) 10:20:28
>>87
絵の書ける友達がいてるというのが羨ましい
ゲーム自体は何てことはない、そこらにある内容だけど
150点くらい取ったが、脱ぐ気配はないな

97 :デフォルトの名無しさん:2010/03/23(火) 11:39:32
>>87
うわ、想像してた以上に面白いw

98 :デフォルトの名無しさん:2010/03/23(火) 13:27:31
結論:ともだちは大事にしよう

99 :デフォルトの名無しさん:2010/03/23(火) 13:52:49
自演乙

100 :デフォルトの名無しさん:2010/03/23(火) 14:23:32
>>87
自演辞めれ・・・

101 :デフォルトの名無しさん:2010/03/23(火) 14:25:50
N88BASIC世代には普通に面白い

102 :デフォルトの名無しさん:2010/03/23(火) 15:30:52
サーブレットの質問です。
C:\apache-tomcat-6.0.26\webapps\myapp\WEB-INF\classes\com\gokuiSample025.javaには
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//パラメータ取得
String person = request.getParameter("person");
//コード変換
person = new String(person.getBytes("8859_1"),"SJIS");
//出力
response.setContentType("text/html;charset=Shift_JIS");
PrintWriter out = response.getWriter();
out.println("<html><head><title>サンプル025</title></head><body>");
out.println(person + "さん、こんにちは");
out.println("</body></html>");
out.close();
}
・・・というコードが含まれていて、実行させるにはpostメソッドが必要みたいです。
そして、Sample025.htmlというファイルは
<form method="post" action="Sample025">
お名前:
<input type="text" name="person" size="20">
<input type="submit" value="OK">
</form>
・・・というコードが含まれています。
ただ、このSample025.htmlを「どこに置いて」「どう実行させればいいのか」分かりません。
C:\apache-tomcat-6.0.26\webapps\myapp\の直下に置いて
http://localhost:8080/myapp/Sample025.htmlとやっても「ファイルが無い」と言われます。
「どこに置いて」「どう実行させればいいのか」を教えてください。

因みに、http://localhost:8080/myapp/Sample025だとサーブレット単体では動くのですが、
「HTTPステータス 405 - HTTPのGETメソッドは、このURLではサポートされていません。」と言われます。
では、お願いします。

103 :デフォルトの名無しさん:2010/03/23(火) 16:01:44
>C:\apache-tomcat-6.0.26\webapps\myapp\の直下に置いて
http://localhost:8080/myapp/Sample025.htmlとやっても「ファイルが無い」と言われます。

ふつーはこれでいいはずなんだが
web.xmlを見せてみ
もしくはmyapp直下にWebContentsとかってディレクトリがあったりする?

>因みに、http://localhost:8080/myapp/Sample025だとサーブレット単体では動くのですが、

サーブレットのdoPostメソッドしかオーバーライドしてないから




104 :102:2010/03/23(火) 16:09:54
>>103
ありがとうございます。myappの直下にはwork(SESSIONS.serのみ含む)とWEB-INFの二つのディレクトリしかありません。
C:\apache-tomcat-6.0.26\webapps\myapp\WEB-INF\web.xmlの内容は以下の通りです:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>DefaultServlet</servlet-name>
<servlet-class>com.gokui.Sample022</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DefaultServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Sample025</servlet-name>
<servlet-class>com.gokui.Sample025</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Sample025</servlet-name>
<url-pattern>/Sample025</url-pattern>
</servlet-mapping>
</web-app>

105 :102:2010/03/23(火) 16:14:39
>>104のweb.xmlについて少し説明させてください。(読みづらくてすみません、改行を減らしました)

<welcome-file>index.html</welcome-file>
は今のところ、一度も表示されたことはありません。 ←これも置き場所で迷ってます

<servlet-class>com.gokui.Sample022</servlet-class>
はURLのファイルが見つからなかった場合に表示されます。 ←http://localhost:8080/myapp/Sample025.htmlで表示されるのがこれです

<servlet-class>com.gokui.Sample025</servlet-class>
<url-pattern>/Sample025</url-pattern>
が、今回のサーブレットです。

・・・必要であれば補足しますので、どうかお願いします。

106 :デフォルトの名無しさん:2010/03/23(火) 16:20:58
とりあえずSample25.htmlを表示させることを考えよう
13行目の<servlet>
から
28行目の</servlet-mapping>
まで全部消してtomcat再起動してみて
http://localhost:8080/myapp/Sample025.html
にアクセスするとどうなる?

107 :デフォルトの名無しさん:2010/03/23(火) 16:21:44
<servlet>
<servlet-name>DefaultServlet</servlet-name>
<servlet-class>com.gokui.Sample022</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DefaultServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
を消せばいい

108 :102:2010/03/23(火) 16:39:48
>>106-107
表示されました!
しかも、名前を入力すると

>名無しさん、こんにちは

・・・Sample25も動きます!
問題解決です。
デフォルトが邪魔していたんですね。
大変助かりました!
本当にありがとうございました!

109 :デフォルトの名無しさん:2010/03/23(火) 20:03:53
html文のコメントを削除するために、
String#replaceAll("<!--[^-->]*-->", "") をつかいました。
Google アドセンスのコードの一部を削除してしまうのではないかと思いましたが、予想に反してGoogle アドセンスのコードはそのまま残ってました。
詳しい方、その残っていた理由を教えてもらえませんでしょうか。

110 :デフォルトの名無しさん:2010/03/23(火) 20:55:05
文字列を指定文字数で分割してlistに入れたいのですが
以下のコードでは分割前と分割後に文字数が2文字前後違ってしまいます
どこがいけないか教えていただけないでしょうか
int nextIndex = 0;
while (nextIndex < content.length()) {
try {
list.add(content.substring(nextIndex, nextIndex + splitSize));
nextIndex = nextIndex + splitSize + 1;
} catch (Exception e) {
list.add(content.substring(nextIndex, content.length()));
break;
}
}

111 :デフォルトの名無しさん:2010/03/23(火) 21:06:48
>>109
その残ったGoogleアドセンスのコードとやらをさらせ

112 :デフォルトの名無しさん:2010/03/23(火) 21:07:05
2文字前後っー意味がよくわからん。
見た感じだと1文字すっとばしてる。
"0123456789".substring(0,3) ... "012"
"0123456789".substring(0+3+1,3) ... "456"
"0123456789".substring(0+3+1+3+1,3) ... "89"


113 :デフォルトの名無しさん:2010/03/23(火) 21:09:29
>>110
> nextIndex = nextIndex + splitSize + 1;
nextIndex = nextIndex + splitSize;

114 :109:2010/03/23(火) 21:13:48
>>111 こんな感じです↓どんなもんですかね
<script type="text/javascript"><!--
google_ad_client = "pub-?????????????";
/* 468x15, 作成済み 08/05/21 */
google_ad_slot = "xxxxx";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="//pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

115 :デフォルトの名無しさん:2010/03/23(火) 21:41:14
>>112 >>113
nextIndex = nextIndex + splitSize
ご指摘どうりでした
どうもありがとうございました

116 :デフォルトの名無しさん:2010/03/23(火) 22:01:37
>>109
つか、その正規表現おかしくないか?
[^]はかっこの中にない任意の1文字だぞ
<!-- comment -->
は削除されるけど
<!-- com-ment -->
だと削除されなくなるだろ

おれなら正規表現をあきらめるけど
あんまり複雑な正規表現は保守性がよくないし


117 :デフォルトの名無しさん:2010/03/24(水) 05:47:32
ごめんなさい、質問です
バイナリファイル内での文字列の置き換えをしたいのですが、
byte配列として読み込んで、その後の肝心な置き換え処理が早くも分からない状態です

拾いものですがPHPだとこんな感じです
$fp = fopen("binaryfile","rb");
$size = filesize("binaryfile");
$search = bin2hex("foo");
$replace = bin2hex("bar");
$data = fread($fp, $size);
$data16 = bin2hex($data);
$data16 = str_replace($search, $replace, $data16);
$data = pack('H*',$data16);
echo $data;

これをJavaで実現する方法を教えて頂けますか?

118 :35:2010/03/24(水) 08:30:38
沢山のご意見ありがとうございました
でも、質問スレで晒す物じゃなかったですね反省します^^;

また何かがんばって作ってきます
ありがとうございました〜

119 :デフォルトの名無しさん:2010/03/24(水) 14:09:20
http://pc12.2ch.net/test/read.cgi/tech/1267796762/
★★ Java の宿題ここで答えます Part 69 ★★

120 :117:2010/03/24(水) 14:25:14
すみません、解決しました!

121 :デフォルトの名無しさん:2010/03/24(水) 20:52:31
2次元配列の要素に ’ < > がある場合
<などに変換をしたいのですが
if(list[row][colum].matches("'|<|>")){
list[row][colum] = list[row][colum].replaceAll("<",">"); 以下略 }
としてfor文の中にif文を入れているのですがif文に引っかかってくれません。
配列要素に対してうまく置換する方法をご教授下さい。

環境 Java1.4

122 :109:2010/03/24(水) 20:54:48
>>116 そうですね、正規表現がへんでした。
参考になりました。ありがとうございます。

123 :デフォルトの名無しさん:2010/03/24(水) 21:05:49
>>121
matches() は全体一致。やるなら ".*['<>].*" だがその条件判定自体が無駄。
list[row][column] = list[row][column].replace("<", ">"); だけで良いだろ。
きちんとするなら、3 文字程度なら 1 文字ずつトラバースしてエスケープするコード書けよ。

124 :デフォルトの名無しさん:2010/03/24(水) 22:29:01
ご教授

125 :デフォルトの名無しさん:2010/03/25(木) 10:03:46
オブジェクトとxmlのマッピング方法でcommonsのBetwixtというのを見つけました。
JDKでももっと簡単なものや他のライブラリで使い勝手いがいいものはあるでしょうか?

126 :デフォルトの名無しさん:2010/03/25(木) 10:15:25
java.lang.UnsupportedClassVersionError: Bad version number in .class file
が出たとき、情報源がclassやjarしかない場合、どのバージョンなら動くかって確認する方法ありますか

127 :デフォルトの名無しさん:2010/03/25(木) 14:40:12
以前はclassファイルの先頭8バイトをダンプして確認したけど
今ならもしかしたらもっとエレガントな確認方法があるのかもしれない

1.3 : CA FE BA BE 00 00 00 2F
1.4 : CA FE BA BE 00 00 00 30
5 : CA FE BA BE 00 00 00 31
6 : CA FE BA BE 00 00 00 32


128 :デフォルトの名無しさん:2010/03/25(木) 14:53:38
>>121
正規表現使うこと自体が無駄過ぎる

>>126
classファイルにjava class versionが埋め込まれてるからそのクラスバージョンに対応してるjavaコマンド使え。
javaVMが何に対応してるかはシステムプロパティ全部列挙すればみれる。

129 :デフォルトの名無しさん:2010/03/25(木) 14:58:42
質問よく読まずに先入観だけで回答するバカw

130 :デフォルトの名無しさん:2010/03/25(木) 17:16:21
ご教示

131 :デフォルトの名無しさん:2010/03/25(木) 21:24:36
needpasswordの後、解読できるかたいらっしゃいませんか。

var needPassword = "%u30D1%u30B9%u30EF%u30FC%u30C9%u3092%u5165%u529B%u3057%u3066%u304F%u3060%u3055%u3044%u3002";
var badPassword = "%u30D1%u30B9%u30EF%u30FC%u30C9%u304C%u6B63%u3057%u304F%u3042%u308A%u307E%u305B%u3093%u3002";

132 :デフォルトの名無しさん:2010/03/25(木) 21:51:04
板違いだksg

133 :デフォルトの名無しさん:2010/03/25(木) 21:53:04
var needPassword = "パスワードを入力してください。";
var badPassword = "パスワードが正しくありません。";

134 :デフォルトの名無しさん:2010/03/25(木) 21:55:27
これはjavaのしつもんなの?

135 :デフォルトの名無しさん:2010/03/26(金) 02:32:43
馬鹿にはjavaは無理。

http://pc12.2ch.net/test/read.cgi/tech/1197720520/
Java勉強するから支援おね
http://pc12.2ch.net/test/read.cgi/tech/1228452306/
Javaやらないか(超初心者向け)
http://pc12.2ch.net/test/read.cgi/tech/1190032149/
***Javaのオススメ入門書*** 『創るJava』 3.0
http://pc12.2ch.net/test/read.cgi/tech/1110180044/
java講座を一緒に受けよう!

136 :デフォルトの名無しさん:2010/03/26(金) 17:03:47
ダウンキャストでClassCastException になるのだが理由がわからん

class A {
----void test(){
--------B object = (B)this;
--------object.test();
----}
}

class B extends A {
----void test(){
----}
}

137 :136:2010/03/26(金) 17:06:45
わかった
new されるときに親でnewされてるとダメっぽい

138 :デフォルトの名無しさん:2010/03/26(金) 17:38:39
>>125 XML関係はJDOM一本ですべて済んでしまうと思うんだが。

139 :デフォルトの名無しさん:2010/03/26(金) 18:09:33
>>136
A a = new A();
A b = new B();
System.out.println(a instanceof A);
System.out.println(b instanceof A);
System.out.println(a instanceof B);
System.out.println(b instanceof B);


140 :デフォルトの名無しさん:2010/03/26(金) 18:18:29
AspectJってまだ芽はあるんですかね?
結局ログ出力ができるよ〜くらいしか分からないままなんですけど。

141 :デフォルトの名無しさん:2010/03/26(金) 19:53:08
>>136
親クラスが子クラスのまねをしてもダメ。

142 :136:2010/03/26(金) 20:39:57
ちぇー
融通がきかねーなー

143 :デフォルトの名無しさん:2010/03/26(金) 20:59:46
>>140
Aspect単独はあんまり使わない
DIと合わせる場合が多い。まあSeasar使えばいい。

144 :デフォルトの名無しさん:2010/03/26(金) 22:15:02
>>136
っていうか、なんで親クラスで子クラスのインスタンスを呼ぶ必要があるの?

145 :デフォルトの名無しさん:2010/03/26(金) 22:51:42
>>142
設計がゴミなだけ

146 :136:2010/03/27(土) 00:02:03
>>144
クラスを分割する際に少しでも楽をしようとしたんだ
引数とかわたすのめんどいし

147 :デフォルトの名無しさん:2010/03/27(土) 01:47:39
ログ集計とかちょっと使うだけのツール程度なら面倒だからたまにやるな。
親クラスでダウンキャスト。

148 :デフォルトの名無しさん:2010/03/27(土) 04:45:46
>>136
つーか、クラスって定義だがら
中でキャストしたって駄目だろ

クラスを使う側でキャストするなら分かるけど

149 :デフォルトの名無しさん:2010/03/27(土) 04:46:37
>>144
まあ単純な流れのプログラムなら、そういうのも使わずに済むんだろうけどねえ。
大概のシステムで使うよねw

150 :デフォルトの名無しさん:2010/03/27(土) 04:51:03
>>149
mainメソッド側でキャストすれば良いじゃん

151 :デフォルトの名無しさん:2010/03/27(土) 04:52:22
こんなのがプログラム作ってると思うとゾッとするわ

152 :デフォルトの名無しさん:2010/03/27(土) 06:02:03
おまいらのあるべき論なんてどうでもええ。

153 :デフォルトの名無しさん:2010/03/27(土) 06:11:49
class A {
----void test(){
--------B object = (B)this;
--------object.test();
----}
}

class B extends A {
----void test(){
----}

そもそも
Aをnewした時、Aのオブジェクトの中でthisはAを指してる
でもAにBは含まれてないから(B)にキャストできない


154 :デフォルトの名無しさん:2010/03/27(土) 06:52:03
つまりexetends付ける位置が違う

155 :デフォルトの名無しさん:2010/03/27(土) 06:54:28
おまえら素人のコードに鬼の首取ったようにうれしそうだなw
どんだけ虐げられてるんだよw

156 :デフォルトの名無しさん:2010/03/27(土) 07:12:45
いや、俺も素人だけど
レベル低いんでw

157 :デフォルトの名無しさん:2010/03/27(土) 07:19:37
え?誰?

158 :デフォルトの名無しさん:2010/03/27(土) 07:19:51
後言っておくけど、JavaはOJBで覚えられるような甘い言語じゃないからな

159 :デフォルトの名無しさん:2010/03/27(土) 07:22:45
最後に (キリッ を忘れてるぞ

160 :デフォルトの名無しさん:2010/03/27(土) 12:03:30
そりゃ、小中学生による金管バンドで覚えられないのは確かだな。

161 :デフォルトの名無しさん:2010/03/27(土) 17:14:47
>>156
それは知ってる。

162 :デフォルトの名無しさん:2010/03/27(土) 17:16:26
>>158
大概はAPIドキュメント読むだけで十分。


163 :デフォルトの名無しさん:2010/03/27(土) 17:34:14
>>161
え?え?

164 :デフォルトの名無しさん:2010/03/27(土) 19:41:07
テキストファイルに辞書の見出し語と意味が一行づつ書いてあります
ここからファイル読み込みつつ検索を行いたいのですが、
高速な方法ってどんなものが考えられるでしょうか?
一行づつ読み込んで前方一致で抽出すると全然おそかったので・・・

165 :デフォルトの名無しさん:2010/03/27(土) 19:53:54
BM法使うとか。

166 :デフォルトの名無しさん:2010/03/27(土) 20:09:32
事前に形態素解析とかしてデータベース作成しておいてもいいのなら
Googleみたいな感じで検索できる

167 :デフォルトの名無しさん:2010/03/27(土) 20:15:49
テキストファイルは見出しでソートしておく
テキスト全体の半分位の位置の見出しを見付けて
検索対象がそれより前か後ろか調べる、の繰り返し

168 :デフォルトの名無しさん:2010/03/27(土) 22:02:57
え、見出し語を検索じゃなくて全文検索だろ?

169 :デフォルトの名無しさん:2010/03/27(土) 22:12:00
JDK5で、単純なWeb自動巡回ツール作成しています。

readLine()→単語抽出→readLine()のループなんですが、
htmlがcharset=ISO-8859-1 のページで「&#数字」を使ったUTF-16で埋め尽くされているサイトで頓挫中です。

&$12426;&$12427;&$12428 (=りるれ)
という具合です。対応マップ作るにも漢字含めると膨大すぎて。

InputStreamReaderのcharsetをUTF-16/BE/LEと試しましたが文字には変換して貰えませんでした。
&#数字を文字(列)に変換する方法ないでしょうか? JDK6でも構いません。

170 :デフォルトの名無しさん:2010/03/27(土) 22:29:16
>>169
その数値がそのまま Java の char 1文字だよ。
char ch = 12426; ← 「り」を代入

自分で変換するコードを書いても難しくないとおもうけど、そもそも本
来はHTMLパーザを使ってからテキストを抽出するべき。



171 :デフォルトの名無しさん:2010/03/27(土) 22:35:40
>>169
HTML の解析なら↓らへん使って Document オブジェクトを作って、
getDocumentElement().getTextContent() が確実。
http://www.koiroha.org/xmllib/

172 :デフォルトの名無しさん:2010/03/27(土) 22:40:20
ネットからデータをダウンロードするソフトを作っています。
GUIとダウンロードクラスを作っています
「ダウンロードを開始します」とか、「404エラー」ですとGUIに表示したいのですが
何か良い方法ありませんか?

173 :デフォルトの名無しさん:2010/03/27(土) 23:15:55
JOptionPane

174 :デフォルトの名無しさん:2010/03/28(日) 00:16:15
ダウンロード開始するたびにいちいちダイアログを出すのは面倒なのでは。
普通にJLabelにテキストを表示してもいいだろうし、
アプレットを起動したときに使える「Javaコンソール」みたいに
JTextAreaに1行ずつメッセージを追加するようなのも良いと思う。
あとJEditorPaneを使うのもいいかも。
JEditorPaneはHTMLを表示できるので、
"<font color=black>ダウンロードを開始します</font><br>"
"<font color=blue>ダウンロードが完了しました</font><br>"
"<font color=red>404エラーです</font><br>"
みたいなメッセージを末尾に追加していけば、
メッセージの種類ごとに色を変えられる。


175 :デフォルトの名無しさん:2010/03/28(日) 01:19:34
>>172>>174
ログ形式でリアルタイムモニターできるようにするといいよね。

176 :デフォルトの名無しさん:2010/03/28(日) 03:35:08
どんどんハードルが上がっていくわなw

177 :デフォルトの名無しさん:2010/03/28(日) 03:39:43
>>176
どこがw

178 :デフォルトの名無しさん:2010/03/28(日) 04:50:12
あまりにも不確定要素が多過ぎるので質問させてください。
今、JDBCレルムによるFORMパスワード認証を試していますが、以下のようなエラーが出てデータベースに接続できません:

2010/03/28 4:13:21 org.apache.catalina.realm.JDBCRealm start
致命的: データベース接続オープン中に例外が発生しました
java.sql.SQLException: org.gjt.mm.mysql://localhost/authorization
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:704)
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:786)

server.xmlの関係するだろう部分は以下の通りです:
<Realm className="org.apache.catalina.realm.JDBCRealm"
connectionURL="jdbc:mysql://127.0.0.1/authorization"
driverName="com.mysql.jdbc.Driver"

connectionName="root"
connectionPassword=""

roleNameCol="role"
userCredCol="password"
userNameCol="username"
userRoleTable="roles"
userTable="users"
/>

…まず、検索するとorg.gjt.mm.mysql.Driverは古いのでcom.mysql.jdbc.Driverを使うべき、とありました(http://www.javadrive.jp/servlet/auth/index5.html)。
しかし、com.mysql.jdbc.Driverに変えてみましたが、結果は同じです。本来、どちらが正しいのでしょうか?

あと、自分のMySQLはユーザー名はrootで設定してあるのですが、パスワードは設定していません
(つまり、MySQLをコマンドラインから起動するときはパスワードを空欄のままEnterを押して入れます)。
このような場合、connectionNameとconnectionPasswordは上記の通りでよろしいのでしょうか?

179 :178:2010/03/28(日) 04:58:39
すみません、混乱させてしまったかもしれません。

>>178のserver.xmlを使った場合ではエラーは

致命的: データベース接続オープン中に例外が発生しました
java.sql.SQLException: com.mysql.jdbc.Driver     ←違いはここです
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:704)
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:786)

…になります。org.gjt.mm.mysql.Driverを使えば、

java.sql.SQLException: org.gjt.mm.mysql.Driver
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:704)
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:786)

…になります。
では、宜しくお願い致します。

180 :デフォルトの名無しさん:2010/03/28(日) 05:25:16
auth_usersテーブル
auth_rolesテーブル
は作ってあるの?

181 :デフォルトの名無しさん:2010/03/28(日) 05:27:15
userRoleTable="roles"
userTable="users"

すまん、rolesテーブルとuesrsテーブル

182 :178:2010/03/28(日) 05:30:05
>>180
ありがとうございます。
はい、作ってあります。
より正確に書きますと、
mysql> show tables;
+-------------------------+
| Tables_in_authorization |
+-------------------------+
| roles |
| users |
+-------------------------+

mysql> describe roles;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(20) | YES | | NULL | |
| role | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+

mysql> describe users;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(20) | YES | | NULL | |
| password | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
…でデータも既に二件ずつ入れてあります。

183 :178:2010/03/28(日) 05:32:44
その二件は以下の通りです:

mysql> select * from roles;
+----+----------+--------+
| id | username | role |
+----+----------+--------+
| 1 | nakamura | member |
| 2 | tanaka | member |
+----+----------+--------+

mysql> select * from users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | nakamura | 1234 |
| 2 | tanaka | 5678 |
+----+----------+----------+

184 :デフォルトの名無しさん:2010/03/28(日) 06:22:02
DriverはTomcatのcommon/lib に入れた?

185 :デフォルトの名無しさん:2010/03/28(日) 06:36:42
ごめん、入ってなかったらエラーメッセージが違うか

186 :デフォルトの名無しさん:2010/03/28(日) 08:56:13
>>184
いや、多分それが原因で正解。
エラーが起きた箇所のソース見るとこうなってる(Tomcat 6.0.26だと仮定すると)。

698 :  // Instantiate our database driver if necessary
699 :  if (driver == null) {
700 :   try {
701 :    Class clazz = Class.forName(driverName);
702 :    driver = (Driver) clazz.newInstance();
703 :   } catch (Throwable e) {
704 :    throw new SQLException(e.getMessage());
705 :   }
706 :  }

throw new SQLException(e) ってしてくれればよかったんだがな。
それなら、rootCauseからそれらしいエラーメッセージ出してくれるから。

187 :デフォルトの名無しさん:2010/03/28(日) 10:21:43
スレッドの勉強で木が土から水を吸い上げてくプログラムを作ってたんだよ。葉、根、水のクラスを作って。
それで水クラスには「葉、根、土に含まれる水」っていう変数をそれぞれ作ったんだけど、これってわざわざ水クラス作らなくても
葉(根)クラスに「葉(根)に含まれる水」の変数を作る方法もあるよね
クラスを作るときは仕様書から名詞を抜き出すって教わったから水クラスを作ってみたんだけどどっちが一般的なわけ?

188 :デフォルトの名無しさん:2010/03/28(日) 10:34:27
それ作ってなんか良い事あるのか?

189 :デフォルトの名無しさん:2010/03/28(日) 10:35:46
PipedInputStreamやPipedOutputStreamを駆使して「葉」とか「根」を表現すれば、
 水はbyteです(キリッ
で押し通せるんじゃない?

190 :187:2010/03/28(日) 10:51:43
>>189
>PipedInputStreamやPipedOutputStream〜
それはちょっとわからない

class Water{
int leaf;
int soil;
}
とか作っておいて
class Leaf{  //葉クラス
Water water;  //水のインスタンス
public Leaf(Water water){
this.water = water;
}

run(){
water.leaf += 50;
}
}
みたいにインスタンスを作って扱うか、
class Leaf{
int leafWater;
run(){
leafWater += 50;
}
}
みたいにそのままクラスの中で変数を扱うかってこと

191 :デフォルトの名無しさん:2010/03/28(日) 10:53:17
>>189
Stream だろjk

192 :デフォルトの名無しさん:2010/03/28(日) 10:56:52
http://www2.nissan.co.jp/LEAF/top.html

193 :デフォルトの名無しさん:2010/03/28(日) 11:01:23
このスレ住人は基本的に怠け者だから、
花クラスとか追加するたびに水クラスに修正入るのたぶん嫌うだろうね。

「黒板モデル」ですっ(キリッとか適当なbuzzワードで言いくるめれば
納得しちゃう連中でもあるんだけどさ

194 :デフォルトの名無しさん:2010/03/28(日) 11:20:41
>>190
下の方が簡単で良いんじゃないの?

195 :187:2010/03/28(日) 11:21:18
>>193-4
やっぱり修正はめんどうだよね
じゃあそれぞれのクラスの中に変数作るわ
thx

196 :デフォルトの名無しさん:2010/03/28(日) 11:24:24
難しくすると後がめんどいだろ

197 :デフォルトの名無しさん:2010/03/28(日) 11:27:15
bufferedreaderとかって本当に意味あるの?
↑を使わなくても、OSとかが適当にバッファリングしてくれる気がするだけど

198 :デフォルトの名無しさん:2010/03/28(日) 11:31:30
>花クラスとか追加するたびに水クラスに修正入るのたぶん嫌うだろうね。
禿同。
しかし土->根(->茎?)->葉という関係モデルはスレッドの勉強という主旨から外れてしまうのかな・・・
水クラスでは、どこがどこから水を取るのかって構造が見えないのが嬉しくない気がする。

あと怠惰、傲慢、短気は三大美徳だしな。それに、納得しないで変に拘ってたら話が進まん。


199 :デフォルトの名無しさん:2010/03/28(日) 11:44:58
>水クラスでは、どこがどこから水を取るのかって構造が見えないのが嬉しくない気がする。
水クラスをみたら構造が見えるようにも組めるの?
水の吸い上げは根茎葉が各自で根は土から、茎は根からっていう風に作ったんだけど

200 :デフォルトの名無しさん:2010/03/28(日) 13:07:03
>199
水クラスに各部分の水量を保持する構成だと、各部分のクラスは水クラス
とだけ関係を持つことになるんじゃない?
具体的な例としては、茎クラスと葉クラスの関係の直接的な表現。
>>190 のWaterアリの例からして、LeafクラスはWaterとしか関係してないし。

この場合、関係の表現は水クラスに集中することになるから、花クラスとか
追加するたびに水クラスに修正入ることになるはず。
つまり今は水クラスは小さいかもしれないけど、関連クラスが何百になって
くると全部水クラスにかかって複雑化するだろうと予想出来る。
この複雑化が嬉しくないということ。

個々のクラスが自分の関係情報を持つならば、新しいクラスを追加した時
には直接に関係する複数のクラスを修正することになるけど、複雑さは
分散されて超複雑なクラスは出来にくいという効果が期待される。

でも嬉しくないだけであり、水クラスに集中させて関係を一元管理させる
手法もアリだから、集中と分散のどちらを選ぶかは場合によるとしか言い
ようがない。メリットとデメリットを理解するのが重要。


「主旨から外れてしまうのかな・・・」は、元々がスレッドの勉強なんだから、
関連性とかは本筋じゃないんだよなぁという意味。
元々とは離れて設計の話としての質問だよね?

201 :デフォルトの名無しさん:2010/03/28(日) 13:10:06
今日はくだらねぇ脳内設計でオナニー大会か?

202 :デフォルトの名無しさん:2010/03/28(日) 13:12:53
今日も煽るだけのオナニーか?

203 :デフォルトの名無しさん:2010/03/28(日) 13:16:40
おまえのオナニーか?

204 :デフォルトの名無しさん:2010/03/28(日) 13:21:06
エロ画像だけ収集するプログラムはできないかな?

205 :デフォルトの名無しさん:2010/03/28(日) 13:37:01
>>200
なるほど
やっぱりクラスの部品化を考えると水に機能も無いことだし分散させたほうがいいのか
>>190では省略しちゃったんだけど葉クラスでは茎クラスの水を減らして、その分葉クラスの水を増やすメソッドがあるんだけど
Waterクラス無しだとそれぞれのクラスの水をstatic宣言して他のクラスで操作できるようにするか、
葉クラスに茎クラスのインスタンスを作るっていう形になるのかな

スレッドのサンプルプログラムとして作った木のプログラムでふと思った疑問についての話なんで、スレッドはこれに関係ないです

206 :デフォルトの名無しさん:2010/03/28(日) 13:40:58
例外発生しない処理A
try {
例外が発生する可能性のある処理B
} catch(Exception e) {
}
処理Aが2〜3行で、処理Aは処理Bの前処理である
この条件の時に、おまえらだったらこう書く?↓
try{
例外が発生ない処理A
例外が発生する可能性のある処理B
}catch(Exception e){
}

207 :デフォルトの名無しさん:2010/03/28(日) 13:54:28
import  java.io.*;
import  java.net.*;
import  java.util.Date;

class   URL
{
    public  static  void    main(String args[]) throws  Exception
    {
        int c;

        //  これもダメ
//      URL url = new URL( args[0] );

        //  これもダメ
        URL url = new URL( "http://www.google.co.jp" );
        

上のように書いてるんですが、いまいちjavaのクラスがわかりません
URL のオブジェクトを作るにはどうやってかくのでしょうか?


208 :デフォルトの名無しさん:2010/03/28(日) 13:58:57
>>207
class URL
{

を別名に変更

209 :デフォルトの名無しさん:2010/03/28(日) 14:24:51
import  java.io.*;
import  java.net.*;
import  java.util.Date;

class   app30
{
    public  static  void    main(String args[]) throws  Exception
    {
        int c;

        //  これもダメ
        URL url = new URL( args[0] );

        //  これもダメ
//      URL url = new URL( "http://www.google.co.jp" );
        

app30.java:12: シンボルを見つけられません。
シンボル: コンストラクタ URL(java.lang.String)
場所    : URL の クラス
        URL url = new URL( args[0] );
                  ^

クラス名かえましたが ダメですね


210 :デフォルトの名無しさん:2010/03/28(日) 14:27:12
URL.class が残ってるとかじゃねえのかよ。

211 :デフォルトの名無しさん:2010/03/28(日) 14:36:34
とりあえずEclipse上でやろうぜ

212 :178:2010/03/28(日) 14:55:46
>>184-186
ありがとうございます(すみません、返事が遅くなりました)。
自分のTomcat(6.0.26、最新)には:

Directory of C:\apache-tomcat-6.0.26

[.] [..] [bin] [conf]
[lib] LICENSE [logs] NOTICE
RELEASE-NOTES RUNNING.txt [SERVLET_JSP_650] [temp]
[webapps] [work]
4 File(s) 54,734 bytes

…しかありません("common"というディレクトリがありません)から、common/libというのは
C:\apache-tomcat-6.0.26\lib
のことで良いですよね?
その下にあるファイルは以下の通りです:

Directory of C:\apache-tomcat-6.0.26\lib

[.] [..] annotations-api.jar
catalina-ant.jar catalina-ha.jar catalina-tribes.jar
catalina.jar el-api.jar jasper-el.jar
jasper-jdt.jar jasper.jar jsp-api.jar
servlet-api.jar tomcat-coyote.jar tomcat-dbcp.jar
tomcat-i18n-es.jar tomcat-i18n-fr.jar tomcat-i18n-ja.jar
16 File(s) 5,024,483 bytes
2 Dir(s) 144,014,782,464 bytes free

その"Driver"というのは"tomcat-dbcp.jar"のことでよろしいのでしょうか?

213 :デフォルトの名無しさん:2010/03/28(日) 16:01:40
普段どんなコードかいてるのか知らないけど普通イベント駆動型にしないか。

214 :デフォルトの名無しさん:2010/03/28(日) 17:10:44
Java 1.6.0_16なのですが、JTableとRowSorterを実装していて困った現象にみま
われています。

ソートをかけていない状態だと問題ないのですが、ソートをかけた状態でJTable
に接続しているモデルの内容を減らしたり増やしたりするとExceptionを吐く時が
あります。(いつもではありません。)

内容は長いので一部とさせて下さい。
Exception in thread "AWT-EventQueue-0"
java.lang.ArrayIndexOutOfBoundsException:x
at
javax.swing.DefaultRowSorter.convertRowIndexToModel(DefaultRowSorter.java:xxxx...

大変無礼は承知しておりますが、
ソースコードは事情があって載せられません…。

どなたかお力添えいただけないでしょうか。Exceptionを吐かないようにしたいの
です。

なお、モデルを読み込む際、トリガにリフレクションを使用しており、それも疑
っております。



215 :デフォルトの名無しさん:2010/03/28(日) 19:31:28
swingでメニューバーから終了したときに、
×ボタンをクリックした時と同じ効果を出したいのですが
「exit」以外で何か良い方法ありませんか?

216 :デフォルトの名無しさん:2010/03/28(日) 20:46:35
WINDOW_CLOSING イベントをイベントキューに入れてしまうとか。

217 :デフォルトの名無しさん:2010/03/28(日) 21:09:19
>>215
java.awt.Window#dispose()

218 :デフォルトの名無しさん:2010/03/28(日) 21:22:38
今仕事クビになって仕事探してるところなんだけどなかなか見つからないから
javaの資格でも取ろうと思ってるんだけど
SJC-Pの資格で就職出来るレベル?
あと勉強用のおすすめの本とかあれば教えてほしい

219 :デフォルトの名無しさん:2010/03/28(日) 21:30:49
>>217
thx

220 :216:2010/03/28(日) 22:00:14
なんだ、
>>217 の答えでよかったのか。
深読みしてしまったよ。


221 :デフォルトの名無しさん:2010/03/28(日) 22:51:07
>>170
>>171
ありがとうございます。
HTMLパーサというものがあるんですね。
解決法が分からず疲れて1日死んでましたが、またやる気が沸いてきました。

222 :デフォルトの名無しさん:2010/03/28(日) 23:39:39
>>220
せっかく少ない脳をフル回転して教えてやったというのにまったく・・・

223 :デフォルトの名無しさん:2010/03/29(月) 00:00:15
>>214
同じエラーが出る最小コードを新しく書いて出せば良いと思う。
最小コードを作ってる時に、原因がわかることもあると思う。

それでもわからなかったら書いた最小コードをここに貼れば、
偉い人が原因と解決方法を教えてくれるかもしれない。

224 :178:2010/03/29(月) 00:27:06
>>184-186
ドライバやっと見つかりました。
ありがとうございました!

225 :デフォルトの名無しさん:2010/03/29(月) 10:49:54
jsplitpaneにコンポーネントを追加すると、
追加したコンポーネントがヘコんで見えるのですが
それを直すにには、どうすればいんですか?

226 :デフォルトの名無しさん:2010/03/29(月) 10:54:58
>>225
そりゃそうだろ

227 :デフォルトの名無しさん:2010/03/29(月) 18:02:10
>>209


228 :デフォルトの名無しさん:2010/03/29(月) 18:46:19
>>227
210が言ってるみたいにURL.classが残ってるんじゃねーの?

ためしに java.net.URL url = new java.net.URL(args[0]); みたいに完全装飾クラス名を使ってみるとか。

229 :デフォルトの名無しさん:2010/03/29(月) 21:05:03
Webアプリケーションの質問ですが、以下のように遷移する処理があります。
チェック処理をかましているため、このシーケンス通りに進まないとDに行けません。

A → B → C → D

ここで、ユーザがAをアクセスした場合、Dを一発で返すようにしろとの要求があります。
B〜Dは他社製造でレスポンスやらを変えることはできません。

そこでAのアクセス中に何とかしてDをレスポンスとして返したいです。

HttpClientを使用して以下を考えてます。

1.Aアクセスがあったら、Aのクッキーをセットしそのクッキーを含んだHttpClientを生成します。
2.HttpClientでB → C → Dをアクセスし、Dのレスポンスをそのままブラウザに返す。

理屈では行けると思うのですが、どうでしょうか?
プログラム内でのクッキー再利用は許可を取っているので、そこはスルーして下さい。

230 :デフォルトの名無しさん:2010/03/29(月) 22:41:06
普通にやるとjspに番号を書き出して照合するからjsp経由じゃないと、無理じゃないかな?
どうなってるか知らないから分からないけど

231 :デフォルトの名無しさん:2010/03/29(月) 22:48:27
素人に意見なので無視しておけだけど

232 :デフォルトの名無しさん:2010/03/29(月) 23:31:46
いいんじゃないの
リクエストチェインは普通のことだろ

233 :デフォルトの名無しさん:2010/03/29(月) 23:42:20
無視はよくない

234 :デフォルトの名無しさん:2010/03/29(月) 23:49:25
なんだよ。
「どうでしょうか?」って
他にもいろいろ制限がありそうだし
「やってみりゃいいじゃん」
としかいいようがない


235 :デフォルトの名無しさん:2010/03/30(火) 00:06:50
すみません。ジェネリックで教えてください。
List<string> list = ArrayList<String>();
で list に要素文字列を add したあと、これをソートしようとして次のコードをかきました。

http://ideone.com/us4zACSw

すると、どうしても Recompile with -Xlint:unchecked なるメッセージが出てきます。
これはどのように直せば、このタイプのエラーがなくなるのでしょうか?
よろしくお願いいたします。

236 :デフォルトの名無しさん:2010/03/30(火) 00:11:05
Comparator<String> を使おう。

237 :デフォルトの名無しさん:2010/03/30(火) 01:05:21
ぷぅ〜

238 :235:2010/03/30(火) 05:24:17
これで解決できました。ありがとうございました。
http://ideone.com/8zeVWiEy

239 :デフォルトの名無しさん:2010/03/30(火) 06:22:46
いえいえ

240 :デフォルトの名無しさん:2010/03/30(火) 08:08:20
>>238
まあこれからも何でも聞いて頂戴w

241 :デフォルトの名無しさん:2010/03/30(火) 08:48:40
>>238
どういたまして

242 :デフォルトの名無しさん:2010/03/30(火) 09:33:09
おまえら誰だよw

243 :デフォルトの名無しさん:2010/03/30(火) 10:20:58
>>232
リクエストチェインってなかなか検索で引っかからないんですけど、
手法や説明しているサイトありますか?

244 :デフォルトの名無しさん:2010/03/30(火) 19:14:29
JTextAreaやJTextPaneで二行目以降の行頭で入力してundoするとデータが壊れるバグ
IMで変換しなくても文字列を選択していなくても直接入力でも再現しますね
windows XP Home sp3 JRE1.6.0_18

aaaa
b

aaaa
(バックスペース)

aaaa
あいうえお

これをundoしていくと
aaaab
b
になり表示がおかしいだけじゃなくそのうちアプリがハングします
報告する英語力無いから困った

245 :デフォルトの名無しさん:2010/03/30(火) 20:03:23
>>243
一般的にはアクションチェインじゃないかな?

246 :デフォルトの名無しさん:2010/03/31(水) 06:35:58
質問させてください。

あるアプリケーションで、ユーザーに色を選ばせてその色で
グラフィックを描写することを考え、choiceクラスによる色選択と
itemStateChangedメソッドによる色変更を行いましたが知識が
無いせいかプログラムが長く面倒です。

String s=((Choice)e.getItemSelectable()).getSelectedItem()+"";
として、
if(s.equals("red"))c=Color.red;
と今はしています。
これより良い方法はありませんでしょうか?
色は10色ぐらいから選びたいです。
別にchoiceじゃなくてもかまいません。
使用するべきクラス名だけでもかまいませんので教えてください。

247 :デフォルトの名無しさん:2010/03/31(水) 06:41:04
初心者な質問ですが宜しくお願いします。
まずXの1/2乗(√x)ってx^(1/2)ではないのですか?
どうも値がおかしかったので10000^(1/2)でためしたら
そのまま10000が出力されていたのですがどうしたらいいのでしょうか?

もう一つはほかのクラスのテキストフィールドの値を別のクラスで
取りたいのですが方法はテキストフィールドのオブジェクトを生成
int i=Integer.parseInt(オブジェクト名.TextField名.getText());
ではダメなのでしょうか?スレッド内で行ったのですが、コンパイル
はとおって実行時にエラーが出てしまいます。
両方とも私なりに調べてみたのですが・・・
長文になってしまいましたが宜しくお願いします。

248 :デフォルトの名無しさん:2010/03/31(水) 08:27:41
お願いします。誰か教えてください。

Socket sock;
BufferedReader read;

try{
sock = new Socket("IPアドレス",21);
read = new BufferedRead(new InputStreamReader
(sock.getInputStream()));
System.out.println(read.readLine());
System.out.println(read.readLine()); ------------------------(*)
sock.close();
}catch(Exception){/*error*/}
}

目印の部分で止まって動かなくなってしまいます。
どうしてですか?
レスポンスが終端に達しているのなら -1 が返ると
思っているのですが、認識違っていますか?


249 :デフォルトの名無しさん:2010/03/31(水) 08:34:01
>>246
JColorChooser

250 :デフォルトの名無しさん:2010/03/31(水) 09:12:11
>>247
Math.pow(10000, 1.0/2)
^ は exclusive or の演算子で、べき乗とはまったく関係ない。


251 :デフォルトの名無しさん:2010/03/31(水) 17:59:14
java 1.6のデフォルト状態でネットワーク層って操作できたっけ?

252 :デフォルトの名無しさん:2010/03/31(水) 18:05:08
でけまへん。

253 :デフォルトの名無しさん:2010/03/31(水) 18:26:26
インスタンス1とインスタンス2で共用のインスタンスAを持つことはできないんでしょうか?

testClass instance1 = new testClass();
testClass instance2 = new testClass();
testClass instanceA = new testClass();

instance1.publicInstance = instanceA;
instance2.publicInstance = instanceA;

class testClass{
testClass publicInstance;
}

イメージとしては上記の様な感じで、instance1のpublicInstance内の変数を変更するとinstance2のpulicInstance、instanceAにも変更が適応されるような感じです。

254 :デフォルトの名無しさん:2010/03/31(水) 18:36:47
static

255 :デフォルトの名無しさん:2010/03/31(水) 18:46:24
>>253
staticにすりゃいいだろボケ

256 :デフォルトの名無しさん:2010/03/31(水) 18:47:06
すでに>>254が書いていたか、失礼


257 :デフォルトの名無しさん:2010/03/31(水) 18:47:20
>>257
staticにすりゃいいだろボケ

258 :デフォルトの名無しさん:2010/03/31(水) 20:53:11
入門書には『クラスは設計図で、それを基に実体(インスタンス)を作る』と書かれていました。
しかし、最近別の説明も読みました。以下のような内容です。
-------------------------------------------------------

クラスAbc
Abc abc1 = new Abc();
Abc abc2 = new Abc();

@プログラムの中でAbcクラスにアクセスすると、クラスファイル『Abc.class』を読み込んでメモリ上にクラスオブジェクトを取る。
AAbc abc1 でAbcクラスの変数を作る。
Bnew Abc() すると、@のクラスオブジェクトを基にAbc型のインスタンスオブジェクトが作られる。
C= で代入。
DA〜C同様にAbc型のインスタンスオブジェクトが作られる。

-------------------------------------------------------
この場合、オブジェクトが3個作られることになりますよね?
(クラスのオブジェクト1個、インスタンスのオブジェクト2個。n回newすればインスタンスのオブジェクトn個作られる)

これまでは「インスタンス=オブジェクト」「クラスはインスタンスの設計図(だから実体ない)」という認識だったので、
この説明がトンデモに思えてきます。
合っているのでしょうか? それとも、理解が間違っていますか?

259 :デフォルトの名無しさん:2010/03/31(水) 21:10:14
JavaMailとサーブレットでGmailの送信は出来ました。
でも、JavaMailとサーブレットで「日本語は無理なのか?」というGmailの内容を受信すると

1通目
From:Nanashi <nanashi@gmail.com>
題名: Re: whatever
--------------------------------------------
javax.mail.internet.MimeMultipart@4a1bda

・・・と表示されます、最後の一行は「日本語は無理なのか?」と表示されるはずなのに。
ちなみに、半角英数字で「abcdef」と送れば、ちゃんと「abcdef」と表示されます。
どうすれば日本語が正しく表示されるのか教えてください。

package javaMailTest;

import java.io.IOException;
import java.io.PrintWriter;
import java.security.Security;
import java.util.Properties;
import javax.mail.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

↓続く

260 :259:2010/03/31(水) 21:12:05
public class JavaMail extends HttpServlet {
private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//送信内容の入力
response.setContentType("text/plain;charset=Shift_JIS");
PrintWriter out = response.getWriter();
try {
//ID、パスワード、ホストアドレス設定
String username = "nanashi";//ユーザー名
String password = "gombeh";//パスワード
String pop3host = "pop.gmail.com";//POP3サーバー名
String pop_port = "995";
String temp=null;

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

//空のProperty取得
Properties props = new Properties();
props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.pop3.socketFactory.fallback", "false");
props.setProperty("mail.pop3.port", pop_port);
props.setProperty("mail.pop3.socketFactory.port", pop_port);

↓続く

261 :259:2010/03/31(水) 21:13:46
//Sessionオブジェクトの取得
Session s = Session.getDefaultInstance(props, null);
//Storeオブジェクトの取得
Store store = s.getStore("pop3");
//接続
store.connect(pop3host,username,password);
//Folderの取得
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();
for(int i=0,n=message.length; i<n; i++) {
//FROMとSUBJECTの表示
temp=message[i].getSubject().toString();
out.println((i + 1) + "通目");
out.println("From:" + message[i].getFrom()[0]);
out.println("題名: " + temp);
out.println("--------------------------------------------");
//メッセージの表示
temp=message[i].getContent().toString();
out.println(temp);
}
//close処理
folder.close(false);
store.close();
}catch(Exception e) {
out.println("err" + e.getMessage());
}
out.close();
}
}

262 :デフォルトの名無しさん:2010/03/31(水) 21:33:32
>>258
@で作られるクラスオブジェクトとは
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Class.html
のインスタンスという扱い。

「Class クラスのインスタンスは、実行中の Java アプリケーションのクラスおよびインタフェースを表します。」

263 :デフォルトの名無しさん:2010/03/31(水) 22:16:46
>>259-261
> //メッセージの表示
> temp=message[i].getContent().toString();
> out.println(temp);

Message(の親クラスのPart)のgetContent()の説明を読みましょう。
返るのはStringかMultipartかInputStreamだと書いてある。


264 :259:2010/03/31(水) 22:50:51
>>263
すみません、それはどこで読めるんですか?
"java.mail.message" getContent() で検索してもヘルプのようなのが見つかりません。

でも今回は返り値がMimeMultipartになっているんですか?

out.println(message[i].getContent());
temp=message[i].getContent().toString();
out.println(temp);

とやったら、
javax.mail.internet.MimeMultipart@1975d46
javax.mail.internet.MimeMultipart@6cbb2d
と表示されました。
,toStringでキャストしてやってもStringになっていないです・・・


265 :258:2010/03/31(水) 23:07:34
>>262
つまり、オブジェクトは3個作られるということでよいのでしょうか?

また、変数づけられていないので、クラスオブジェクトにはアクセスできないということでいいですよね?
インスタンスオブジェクトが存在する限りは、ガベージコレクションの対象にならないと思うのですが、それで合っていますか?

266 :デフォルトの名無しさん:2010/03/31(水) 23:12:10
これじゃね?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3706&forum=12

267 :デフォルトの名無しさん:2010/03/31(水) 23:20:39
>>264
APIリファレンス読まずにどうやってコーディングしているんだよ…
http://java.sun.com/products/javamail/javadocs/javax/mail/Part.html#getContent()

んで
http://java.sun.com/products/javamail/javadocs/javax/mail/Multipart.html
を読めば、getCount()個のBodyPartがgetBodyPart(index)で取れること
がわかる。

で、BodyPartにgetContent()すると、これはまたPartのgetContent()な
ので、StringかMultipartかInputStreamが返る。

つまり、真面目にやるなら再帰的にPartを辿っていかないとメール本文
のStringまで辿り着かない。たいていはmultiPart.getBodyPart(0).getContent()
がStringになるけど。


268 :259:2010/04/01(木) 00:10:41
>>267
APIリファレンス、ありがとうございます。

またまたすみません、
multiPartってどの変数のことですか?
message[i].getCount()とか
message[i].getBodyPart(0)とかやろうとしても
そんなメソッドがないですよね・・・

269 :デフォルトの名無しさん:2010/04/01(木) 01:26:15
>>268

Object content = message[i].getContent();
if (content instanceof String) {
out.println(content);
} else if (content instanceof Multipart) {
Multipart multiPart = (Multipart)content;
...
} else {
throw new RuntimeException("対応してないよん。");
}


270 :259:2010/04/01(木) 08:47:06
>>269
お陰様で日本語もちゃんと表示出来ました:

>abcで

instanceofって便利ですね、これからも覚えておきます。
ありがとうございました!

271 :デフォルトの名無しさん:2010/04/01(木) 10:07:47
InitialLdapContextInitialLdapContext#search()ってマルチスレッド対応なのでしょうか?
というか、マルチスレッド対応って何かで分かるものなのでしょうか?

272 :デフォルトの名無しさん:2010/04/01(木) 13:34:48
Hashtableを使いたいのですが、

キーをInteger
valueを自分で作成したクラスを格納しているのですが、呼び出すとエラーになります。

調べたらすべてObjectで返されるようなのですが、呼び出すものを固定できないのでしょうか?

理由があってJavaのバージョンが1.4.2しか使えないため
Hashtable hoge<a,b> = new Hashtable<a,b>()
ができません。


273 :デフォルトの名無しさん:2010/04/01(木) 13:59:23
>>272
1.4 で generics 使いたいなら retroweaver とか retrotranslator 使えば?

274 :デフォルトの名無しさん:2010/04/01(木) 15:21:19
>>273
試してみます。ありがとうございます

275 :デフォルトの名無しさん:2010/04/01(木) 16:34:19
javaでSSL署名付きメールを送る方法を教えていただけないでしょうか?

276 :デフォルトの名無しさん:2010/04/01(木) 21:20:48
>>265
ObjectのインスタンスにはClassのインスタンスを返すgetClass()がある。
分かりやすく言うならインスタンスからクラスを得ることは可能。
つまりクラスオブジェクトにアクセス可能。
例えば
public class test {
public static void main(String[] args) {
System.out.println("".getClass().getName());
}
}
の結果は、java.lang.String となる。
嘘だが。


277 :デフォルトの名無しさん:2010/04/01(木) 22:18:53
PDFRendererを使用してSwingでPDF表示をしようとしているんですが、
iText2.1.0で作成したPDFファイルを表示しようとすると下記エラーが出てしまいます。

java.io.IOException: Unknown CMap: UniJIS-UCS2-H
at com.sun.pdfview.font.PDFCMap.getCMap(PDFCMap.java:67)
at com.sun.pdfview.font.PDFFontEncoding.<init>(PDFFontEncoding.java:73)
at com.sun.pdfview.font.PDFFont.getFont(PDFFont.java:133)
at com.sun.pdfview.PDFParser.getFontFrom(PDFParser.java:1172)
at com.sun.pdfview.PDFParser.iterate(PDFParser.java:726)
at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101)
at java.lang.Thread.run(Thread.java:619)

iTextのエンコーディング?が無いというエラーだとは解ったのですが
解決策がいまいちわかりません。
どなたかヒントを教えていただけないでしょうか…

278 :デフォルトの名無しさん:2010/04/01(木) 22:25:11
これか
http://sqs.cmr.sfc.keio.ac.jp/tdiary/20071230.html

279 :デフォルトの名無しさん:2010/04/01(木) 22:39:10
>>278
ありがとうございます。
そのサイトも見たんですけど、やはりPDFRendererではまだ日本語表示は無理そうなんですかね。
FOP AWT Previewモードについて再度調べてみます。
ありがとうございました。

280 :デフォルトの名無しさん:2010/04/03(土) 19:43:18
このプログラムが分かりません。

http://www.nicovideo.jp/watch/sm10175056
http://www.nicovideo.jp/watch/sm10175236

281 :デフォルトの名無しさん:2010/04/05(月) 09:37:59
j2eeのTransportについて質問です。マルチスレッドで使おうと思って
session.getDefalutInstance()をせずに下記のようにしています。

Session session = Session.getInstance(props, auth);
Transport transport = session.getTransport("smtp");
transport.connect();

このアプリが時々ハングします。kill -3でスレッドダンプすると二つのスレッドで下記のようなログを出してます。
デッドロックに見えるのですが、session.getInstance()の場合でもsynchronizedで同期しないと
いけないのでしょうか?メール送信の速度が下がるのは避けたいのですが。


"http-8080-39" daemon prio=10 tid=0x00002aab1c649800 nid=0x704 runnable [0x0000000043c42000..0x0000000043c43c80]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:79)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
- locked <0x00002aaaf8500fc0> (a java.io.BufferedInputStream)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:57)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1385)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1205)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:322)
at javax.mail.Service.connect(Service.java:236)

282 :デフォルトの名無しさん:2010/04/05(月) 09:41:42
あ、すいませんgetDefaultInstance()を使わなかったのはスレッドうんぬんではなくて
エンベロープフロムを毎回変えたいからでした。で、まあマルチスレッドで呼び出してるわけですが、
connect()〜send()までの外側で同期とらないと駄目でしょうか。

283 :デフォルトの名無しさん:2010/04/05(月) 10:03:28
2つのスレッドが両方ともそのスタックの通りならデッドロックじゃねぇんじゃ。
スレッドの状態も RUNNABLE だし、単に Read Wait で止まってるように見えるが。

284 :デフォルトの名無しさん:2010/04/05(月) 11:05:38
- locked <0x00002aaaf8500fc0>
の<>の中の値を調べたところ全部異なっていました。デッドロックじゃないですね。
対象のメールサーバーが止まってました。とりあえずtimeout設定してアプリは止まらないように
修正します。外部同期無しで。

似たような状況でメールサーバーが止まってないのにアプリが止まってしまうこともあったのですが今回は
違ったようです。それが起きたらまたスレッドダンプ取って調査してみます。ありがとうございました。

285 :デフォルトの名無しさん:2010/04/06(火) 04:58:14
文字コードを文字に変換したいんですが、\uを文字コードの前につける以外に方法ありませんか?
調べたらこれしか見当たらないので...

286 :デフォルトの名無しさん:2010/04/06(火) 06:21:04
int a = 0x30A2;
char ch = (char)a;

String a = "30A2;
char ch = (char)Integer.parseInt(a, 16);

287 :デフォルトの名無しさん:2010/04/06(火) 11:13:53
>>286
ありがとうございます

288 :デフォルトの名無しさん:2010/04/07(水) 03:42:33
System.in と Runtime#exec() で起動した子プロセスの標準入力を繋げたいんだけど、
System.in から読み出して子プロセスに渡すスレッドを立ち上げると子プロセスが
終わってもそのスレッドは起動したままで終わらせるすべがない。

ftp のようなコンソールアプリでのシェルに落ちるような事がしたいんだけど、どうすれば
よいでしょうか?

289 :デフォルトの名無しさん:2010/04/07(水) 12:00:12
boolean test=false; というのがあったとき

if (test==false) hoge();



if (!test) hoge();



どっち使ったほうがいいの?

290 :デフォルトの名無しさん:2010/04/07(水) 12:16:42
指定がなければ、好きな方でいいよ

291 :デフォルトの名無しさん:2010/04/07(水) 12:19:45
d

292 :デフォルトの名無しさん:2010/04/07(水) 12:36:30
>>289
ふつうは後者。前者で書くと素人だと思われるかも。


293 :デフォルトの名無しさん:2010/04/07(水) 12:44:26
素人は素人らしく書いてくれたほうが

294 :デフォルトの名無しさん:2010/04/07(水) 13:21:18
!は見落としやすいと言う理由でコーディング規約で禁止するところもある
バグの原因究明すると初心者は絶対に見逃すからな

295 :デフォルトの名無しさん:2010/04/07(水) 13:48:22
だがな、if(test != true) とか書かれると一瞬頭が止まるぜ。

296 :デフォルトの名無しさん:2010/04/07(水) 13:53:33
if(test == true)も思考が止まる

297 :デフォルトの名無しさん:2010/04/07(水) 14:16:04
>>294
確かに見おとしやすいから
!の代わりに!!!を使うべしというルールのプロジェクトもあるよ

298 :デフォルトの名無しさん:2010/04/07(水) 14:19:04
>>297
確かに見やすいが ! の数を間違える可能性を無視できないな

299 :デフォルトの名無しさん:2010/04/07(水) 14:37:09
>>294
ほぇー
!はまだ見えるけど、iとjはきつい

300 :デフォルトの名無しさん:2010/04/07(水) 14:40:56
monospaceフォント使ってないの?

301 :デフォルトの名無しさん:2010/04/07(水) 15:52:00
つーか目が悪いならプログラマ向いてないだろう。

302 :デフォルトの名無しさん:2010/04/07(水) 16:18:17
目が見えないプログラマってけっこういるよね

303 :デフォルトの名無しさん:2010/04/07(水) 17:05:11
ダサ字等幅を使っている俺に資格は無かったキリッ。

304 :デフォルトの名無しさん:2010/04/07(水) 17:34:37
>>303
失格

305 :デフォルトの名無しさん:2010/04/07(水) 18:38:42
自分は ! の忘れ(間違い)なんてしょっちゅうだけどな。
でもそれが原因でフィールドでバグになることはめったに無い。
その種の問題は単体テストちゃんとやってれば簡単に見つかるから。

306 :デフォルトの名無しさん:2010/04/07(水) 20:19:29
すいません、初歩的なことで質問があるのですが、問題は
引数で受け取ったString型の文字列を出力する。呼び出し元に'C'という
文字を戻すというふうにあるのですが、どこが足りないでしょうか?

引数のSTUDYを出力しろってことですよね?あとCを戻すというのが意味がわかりません。
現在のコードだとCを出力して終了してしまいます。

class Jikko{
public static void main(String[] args)
{
Sample s=new Sample();
char c=s.method1("STUDY");
System.out.println(c);
}
}

class Sample{
char method1(String str)
{


char c1='C';

return char;
}
}

307 :デフォルトの名無しさん:2010/04/07(水) 20:53:15
変更前のコードだとコンパイルエラーでそ
class Jikko{
public static void main(String[] args)
{
Sample s=new Sample();
char c=s.method1("STUDY");
System.out.println(c);
}
}

class Sample{
char method1(String str)
{
System.out.println(str);//追加

char c1='C';
return c1;//変更
}
}


308 :デフォルトの名無しさん:2010/04/07(水) 21:16:29
>>307さん

教えて頂き有難うございました。
'C'を呼び出し元に戻すというのは戻り値として利用すればよいということなのでしょうか?


309 :デフォルトの名無しさん:2010/04/07(水) 22:19:24
>>308
そういうこと

310 :デフォルトの名無しさん:2010/04/08(木) 00:07:26
しょっちゅう間違える時点でプログラミングの素質無いな。
うっかりバグ入りのままリリースしてそう。

311 :デフォルトの名無しさん:2010/04/08(木) 00:26:14
Javaがインストールできないのでどうしたらインストールできるかおしえてください
インストール中に『選択した昨日は現在使用できないネットワークソースにあります。』とでて先にすすみまん
Googleで何時間も調べてイロイロとやっても無理でした
オフラインも無理でした
どうかおねがいします

312 :デフォルトの名無しさん:2010/04/08(木) 00:29:25
まずごはんを食べに行きます。

313 :デフォルトの名無しさん:2010/04/08(木) 00:31:50
>>311
何からインストールしようとしてるんですか?

314 :デフォルトの名無しさん:2010/04/08(木) 00:42:01
class Nanika {
Nanika oya=null;
Nanika ko=null;
void hoge(){
if (ko!=null) ko.hoge();
}
void main() {
Nanika a=new Nanika();
Nanika b=new Nanika();
Nanika c=new Nanika();
a.ko=b; b.oya=a;
b.ko=c; c.oya=b;
c.ko=a; a.oya=c;
a.hoge();
}
}
こんな感じなんだけどエラーがでる

315 :デフォルトの名無しさん:2010/04/08(木) 00:49:05
そうですか

316 :デフォルトの名無しさん:2010/04/08(木) 00:55:52
>>314
せっかくならzまで欲しかった

317 :デフォルトの名無しさん:2010/04/08(木) 00:59:05
>>313
何からとはどうゆうことですか?
一応以前にはダウンロードしてあるはずなんです。その前のソフトをアンインストールしたらいけるかとおもったんですけどどこにもなくタスクマネージャーでJava関係のプロセスも閉じたんですけどどうもダウンロードできないみたいで

318 :デフォルトの名無しさん:2010/04/08(木) 01:03:54
日本語でOK

319 :デフォルトの名無しさん:2010/04/08(木) 01:06:27
すいません
頭も悪くて
どうしたらまたインストールできますかね?

320 :デフォルトの名無しさん:2010/04/08(木) 01:17:20
staticメソッドしかないクラスのクラス名って省略できないの?

a=Math.abs(b); を a=abs(b); とか;

321 :デフォルトの名無しさん:2010/04/08(木) 01:18:10
import static java.lang.Math.*;

322 :デフォルトの名無しさん:2010/04/08(木) 01:20:39
>>319
スタート→設定→コントロールパネル→
アプリケーションの追加と削除(or プログラムと機能)→Javaと名のつくモノを全部削除

323 :デフォルトの名無しさん:2010/04/08(木) 01:25:51
OSはVISTAなんですけどその場合はなんて項目ですか?
上記の項目がなくて

324 :デフォルトの名無しさん:2010/04/08(木) 01:30:24
>>323
コントロールパネル→プログラム→プログラムと機能

325 :デフォルトの名無しさん:2010/04/08(木) 01:32:36
どうもです
でもやっぱりなかったです。なにか他の原因っぽいみたいですけどなんですかね?

326 :デフォルトの名無しさん:2010/04/08(木) 01:45:45
>>321
初見の機能だ

327 :デフォルトの名無しさん:2010/04/08(木) 01:51:05
危険なので使用禁止

328 :デフォルトの名無しさん:2010/04/08(木) 01:51:11
>>326
静的インポートって奴だね。
JDK5から追加されたんじゃなかったっけか

329 :デフォルトの名無しさん:2010/04/08(木) 01:59:25
JDK5ってもう10年も前じゃないか

330 :デフォルトの名無しさん:2010/04/08(木) 02:01:47
>>325
原因は、あなたの、状況の説明のまずさだろうな。
文章の主語を省略しない方がいい。
Javaよりもまず、日本語を勉強してみてはどうだろうか。

331 :デフォルトの名無しさん:2010/04/08(木) 02:19:42
自分でも頭がわるく説明が下手なのは分かってます。一応考えられる解決策を言っていってもらえないでしょうか?

332 :デフォルトの名無しさん:2010/04/08(木) 02:28:36
static import 宣言は -source 1.3 でサポートされていません
(static import 宣言を使用可能にするには、-source 5 以降を使用してください)



???

333 :デフォルトの名無しさん:2010/04/08(木) 02:32:55
コンパイル時の話でしょ

334 :デフォルトの名無しさん:2010/04/08(木) 03:28:39
メソッド無しの定数だけ定義されてるインターフェースってあり?ダメかな?

335 :デフォルトの名無しさん:2010/04/08(木) 03:58:27
チームに原理主義厨が居なければおk
static import 使えば参照側のクラスに implement → 汚染もないし。

336 :デフォルトの名無しさん:2010/04/08(木) 10:49:45
>>319
http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/
VerifyItem-Start/jdk-6u19-windows-i586.exe?BundledLineItemUUID=0ZJIBe.oq9EAAAEnI9FfFNsX&OrderID=P9dIBe.o3WsAAAEnFtFfFNsX&ProductID=1jZIBe.nzdEAAAEnc3cZVnKo&FileName=/jdk-6u19-windows-i586.exe
上がだめなら jdk-6u19-windows-i586.exeでぐぐるなり
インストールしようとしてるversionなりインストーラー名を書けと言われてるのになぜ書けない?

337 :デフォルトの名無しさん:2010/04/08(木) 10:55:49
夜中にインストールができないと質問した者ですが
インストール中に「選択した機能は現在使用できないネットワークリソースに
あります」と出てしまいます。 「OKをクリックして再試行するか、インストールパッケージ
'jre1.6.0_13.msi'を含むフォルダに対する代替パスを
以下のボックスに入力します。」とゆう文章がでて先に進まないんですけど解決策をおねがいします

338 :デフォルトの名無しさん:2010/04/08(木) 11:40:37
まず頭を良くしよう

339 :デフォルトの名無しさん:2010/04/08(木) 11:42:30
>>337


340 :デフォルトの名無しさん:2010/04/08(木) 11:43:13
>>337
あきらめる




人生も

341 :デフォルトの名無しさん:2010/04/08(木) 12:00:00
頼みますよ
オフラインでも同じのでて困ってます

342 :デフォルトの名無しさん:2010/04/08(木) 12:04:06
みんなワカンネーんだよ。

343 :デフォルトの名無しさん:2010/04/08(木) 12:09:36
わかりたくもないw

344 :デフォルトの名無しさん:2010/04/08(木) 12:11:59
知らぬが仏

345 :デフォルトの名無しさん:2010/04/08(木) 12:18:14
>>337
対処法は何を組み込もうとして居るかに因ります…

346 :デフォルトの名無しさん:2010/04/08(木) 12:22:51
吉里吉里にしとけ

347 :デフォルトの名無しさん:2010/04/08(木) 12:26:11
ちかくのパソコン教室に本体ごともっていって
「これにjava入れてください」って頼め
5000〜30000円くらいだろうが

348 :デフォルトの名無しさん:2010/04/08(木) 12:58:54
>インストールパッケージ'jre1.6.0_13.msi'を含むフォルダに対する代替パスを以下のボックスに入力
すればいいよ。

349 :デフォルトの名無しさん:2010/04/08(木) 13:05:21
誰かに遠隔操作してもらってインストールしてもらえば

350 :デフォルトの名無しさん:2010/04/08(木) 14:15:36
>>303
ラバンスのTrueTypeのやつか?
あれ全角アルファベット無きそうなほど見づらいよな
ごめんな

351 :デフォルトの名無しさん:2010/04/08(木) 14:18:58
>>341
みんなプログラムの質問に答える気でここにいるのに
アプリのインストール程度でつまづく奴の理解ができないんだよ。
よその板行ったら親切に教えてくれる人いるかもよ?
俺もコンパネに「プログラムと機能」が見つかりませんとかいうやつに
文章だけで教える自信無いわ

352 :デフォルトの名無しさん:2010/04/08(木) 15:03:37
プログラマーは上から目線で嫌ですね

353 :デフォルトの名無しさん:2010/04/08(木) 16:14:53
専門分野のスレで門外漢ないし超初心者が質問すると、
だれでもそう感じるものだよ。
プログラマーに限った話ではない。
いちいちムカついてたらネットで勉強なんてできない。

354 :デフォルトの名無しさん:2010/04/08(木) 16:26:41
インストールの様子をニコ生で放送してくれりゃあ、コメントでサポートしてやんよ

355 :デフォルトの名無しさん:2010/04/08(木) 16:30:00
Mac 用の .app 作る Ant タスクってないかね?
毎回 Eclipse でエクスポートするのメンドクセ

356 :デフォルトの名無しさん:2010/04/08(木) 16:36:05
料理すんのに
「道具買ってこい」と指示出しておいて
「どこのお店ですか?どこにあるんですか?漢字読めません 買い物したことないです」
とか仕事で言われてみ

357 :デフォルトの名無しさん:2010/04/08(木) 16:37:57
プログラマー?
いや、インストラクター?
いや サポート?
いや お手伝いレベル

358 :デフォルトの名無しさん:2010/04/08(木) 16:38:45
>>349
遠隔してもうアプリのインス(ry

359 :デフォルトの名無しさん:2010/04/08(木) 16:39:09
>>292
条件文だと分かりにくいから
上で書けって書いてあった本もあったぞ

360 :デフォルトの名無しさん:2010/04/08(木) 16:44:27
質問内容からしてhoge()の必要性を感じない

361 :359:2010/04/08(木) 16:45:57
Javaの場合とC言語とVBのの書き方を分けない奴がいるのが
腹が立ってくる、お前の言語の書き方とは違うんだと百回くらい言いたい

362 :デフォルトの名無しさん:2010/04/08(木) 16:49:32


363 :デフォルトの名無しさん:2010/04/08(木) 17:07:58
>>337
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1433699724

VISTAだとまれに発生するらしいけど(真偽の程は知りませんが)、
Cドライブ直下に適当なフォルダを作って、そこにインストールして
みたら?

364 :デフォルトの名無しさん:2010/04/08(木) 17:19:24


365 :359:2010/04/08(木) 17:54:17
>>363
俺もなったよ
どうやって直したかは忘れた

366 :デフォルトの名無しさん:2010/04/08(木) 18:24:26
複雑なことやらないならインストールせずに解凍してpathとおすだけで動く気がする

367 :デフォルトの名無しさん:2010/04/08(木) 18:25:28
よくバージョンの後に付いてる 1.5*、1.5+ の * と + の違いって何?

368 :デフォルトの名無しさん:2010/04/08(木) 20:20:18
>>367
1.5*=1.5.0〜1.5.22
1.5+=1.5.0〜1.6.19
うそかもしれん

369 :デフォルトの名無しさん:2010/04/08(木) 20:59:59
正規表現なんじゃないの?

370 :デフォルトの名無しさん:2010/04/08(木) 21:15:01
1.5*=1. 1.5 1.55 1.555
1.5+=1.5. 1.55 1.555
ってことですね

371 :デフォルトの名無しさん:2010/04/08(木) 21:27:54
1.5*じゃなくて1.5.*じゃない?
だから1.5系なら全部OKってこと
1.5+は見たこと無いけど1.5以上って意味かと

372 :デフォルトの名無しさん:2010/04/08(木) 21:52:50
>>363
XPの俺が呼ばれた気がする。
おれもなぜかなったがインストーラーをパスに指定した気がする。

373 :デフォルトの名無しさん:2010/04/08(木) 22:07:27
そのパスの指定ってのがわからないんです

374 :デフォルトの名無しさん:2010/04/08(木) 22:43:41
> 1.5+
"1.5 or later"という表現をよく見るだろ。それのこと

>>370
ドットを忘れているぜ

375 :デフォルトの名無しさん:2010/04/08(木) 22:56:42
>>373
そもそも何でJavaをインストールしようと思ったの?
学校の課題?
PCの初歩的な知識も無いんじゃ、いくら質問しても進展しないと思うよ。

376 :デフォルトの名無しさん:2010/04/08(木) 23:12:00
JTabbedPaneの中にJTabbedPaneをaddするとエラーが出るのだけど
これダメなの?

377 :デフォルトの名無しさん:2010/04/08(木) 23:24:38
もう http://java.sun.com/javase/ja/6/download.html 行って新しい版の
インストールキットをダウンロードしてきて実行しろよ。

378 :370:2010/04/08(木) 23:29:49
>>374
確かに忘れてた
1.5*=1. 15 1.5 155 1.55 1555 1.555
1.5+=1.5 155 1.55 1555 1.555

>>373
http://www.java.com/ja/download/help/error_applying_transforms.xml
GUI使わないならhttp://ideone.com

379 :デフォルトの名無しさん:2010/04/08(木) 23:56:43
>>375
以前はインストールできてたんですけアップデートしたらJavaが消えてて。
カボスやってたからJavaが必要だったんです。

380 :デフォルトの名無しさん:2010/04/09(金) 00:00:19
>>376
ダメじゃない。やりかたが間違ってるか、それとも環境が壊れてる。

JTabbedPane tab0 = new JTabbedPane();
JTabbedPane tab1 = new JTabbedPane();
JTabbedPane tab2 = new JTabbedPane();
tab1.add("pan1", new JPanel());
tab1.add("pan2", new JPanel());
tab0.add("tab1",tab1);
tab2.add("pan1", new JPanel());
tab2.add("pan2", new JPanel());
tab2.add("pan3", new JPanel());
tab0.add("tab2",tab2);
add(tab0);

って感じで俺のトコだと問題無し。

381 :デフォルトの名無しさん:2010/04/09(金) 00:59:05
Norton360が邪魔してJavaがインストールできないってどっかでみたきがするんですけどどうですか?

382 :デフォルトの名無しさん:2010/04/09(金) 01:00:51
どうなんですかって聞く前にノートン止めて試せば良いじゃない。

383 :デフォルトの名無しさん:2010/04/09(金) 01:29:17
無理でした。

384 :デフォルトの名無しさん:2010/04/09(金) 01:38:50
>>354

385 :デフォルトの名無しさん:2010/04/09(金) 02:01:06
パソコン初心者でそんなことできないっす

386 :デフォルトの名無しさん:2010/04/09(金) 02:25:48
oracleに苦情の電話を入れるんだ

387 :デフォルトの名無しさん:2010/04/09(金) 02:51:17
なんかオフライン〇〇のプロセスを閉じてたからインストールしろみたいなことでてるんだけど、めんどくさいからタスクマネージャーで全部のプロセス閉じるのはまずいですかね?

388 :デフォルトの名無しさん:2010/04/09(金) 06:07:35
やってみたらわかる。マシンは壊れないから

389 :デフォルトの名無しさん:2010/04/09(金) 10:03:15
パスの設定壊れてるだけ
前後入れ替えたり、いらないものを削除したら直る

390 :デフォルトの名無しさん:2010/04/09(金) 11:15:25
前後をいれかえるってなにの前後ですか?そしてなにをいれかえるんですか?本当しつこくてすいません
ちなみにJava関係はインストールするアプリケーション以外は消しました

391 :デフォルトの名無しさん:2010/04/09(金) 11:43:02
そいつも一回消してDLしなおしてみたら?
入れ替えるのはパスの順序。システムの詳細設定->環境変数->PATH

392 :デフォルトの名無しさん:2010/04/09(金) 11:58:07
javaの公式のサイトで最新版のやつをインストールしたけれど、使えるはずのクラスをコンパイラすることはが出来ません。
コマンドプロンプトで確認してみたらちゃんとインストールされていました。
理由を教えていただけたらうれしいです。

393 :デフォルトの名無しさん:2010/04/09(金) 12:23:42
>>392

  ∧∞∧   ┌───────
  (*‘ー‘)   < シラナイワ
   \ <     └───/|───
    \.\______//
      \       /
       ∪∪ ̄∪∪



394 :デフォルトの名無しさん:2010/04/09(金) 12:42:51
>>390
JREのインストールなんて板違いだから失せろ。
PC初心者板にくだ質かエスパースレくらいあるだろ。
他人のレス全スルーしていつまでグダグダやってんだ。
ム板でやることじゃねぇ。

395 :デフォルトの名無しさん:2010/04/09(金) 13:43:39
>>391
そのPATHまでたどり着いてからはなにをしたらいいんですか?

396 :デフォルトの名無しさん:2010/04/09(金) 14:23:33
>>395
こっちで聞いた方がええだろ
http://pc12.2ch.net/test/read.cgi/win/1267258645/

397 :デフォルトの名無しさん:2010/04/09(金) 14:31:05
もしかして使えてた時にシステム復元で治りますかね?

398 :デフォルトの名無しさん:2010/04/09(金) 14:32:21
情報小出しとcabosでどこいってもスレのルール違反になるな。

399 :デフォルトの名無しさん:2010/04/09(金) 14:43:38
とりあえず、情報が三つ出てきたら一個答えるくらいのペースでいいんじゃないかな?

400 :デフォルトの名無しさん:2010/04/09(金) 15:12:02
DOS窓開いて
format c:
でアプリ初期化してみるとか

401 :デフォルトの名無しさん:2010/04/09(金) 18:49:50
>>400
アプリ初期化ですまないかと

402 :デフォルトの名無しさん:2010/04/09(金) 22:41:30
・・・そうか、PATHが何なのかから話さないとワカラン世代が出てきてるのか。
どっかに良い説明サイトあったっけ?下手に訳も分からず変更するとマズいし。

403 :デフォルトの名無しさん:2010/04/09(金) 22:42:42
決め打ちよくない。

format %SystemDrive%

とすべき。
コマンドプロンプトからSystemDrive変数が見えるかは知らんが。

404 :デフォルトの名無しさん:2010/04/09(金) 23:26:50
携帯から失礼します。>>400を試したらPCが応答しなくなり再起動もできなくなりました。どうしたら良いのでしょうか。

405 :デフォルトの名無しさん:2010/04/09(金) 23:34:59
>>404
ささやき-えいしょう-いのり-ねんじろ!



はいになりました

406 :デフォルトの名無しさん:2010/04/09(金) 23:35:50
いくらなんでも釣り針がでかすぎる

407 :デフォルトの名無しさん:2010/04/09(金) 23:36:39
たしか>>400って逮捕されるよな

408 :デフォルトの名無しさん:2010/04/09(金) 23:41:13
>>400
やってみました。

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\>FORMAT C:
ファイル システムの種類は NTFS です。

警告: ハード ディスクのドライブ C: のデータは
失われます。
フォーマットしますか (Y/N)? N

こわかった。

409 :デフォルトの名無しさん:2010/04/10(土) 07:01:02
元質問者はVistaとの事なので、そこでYを押しても「マウントしてるからうんぬん」と言われて
フォーマットできないはず。Win9xなら知らん

410 :デフォルトの名無しさん:2010/04/10(土) 08:07:17
>>408
linuxじゃなくてよかったな
yとだけ出力し続けるコマンドとかあるからなあれ

411 :デフォルトの名無しさん:2010/04/10(土) 12:18:11
>>410
yesは、同じ文字列をひたすら入力するためのコマンド。
引数なしだと'y'だけど、yes "なんか"にすれば"なんか"
をひたすら出力するよ。

412 :デフォルトの名無しさん:2010/04/10(土) 12:52:01
エロゲーやってると使いたくなるな。

413 :デフォルトの名無しさん:2010/04/10(土) 13:15:27
出力結果を10にしたいのですが、Mymethodメソッドにどういった処理を追加すればよいでしょうか?

class MediumExam1
{
public static void main(String[] args)
{
MediumExam1 med=new MediumExam1();
CompareSample com=new CompareSample();
med.Mymethod(com);
System.out.println(com.i);
}

void Mymethod(CompareSample sample){
}
}

class CompareSample
{
int i=5;
}

414 :デフォルトの名無しさん:2010/04/10(土) 13:34:01
int i=5;



int i=10;

415 :デフォルトの名無しさん:2010/04/10(土) 13:54:07
>>413
void Mymethod(CompareSample sample){
sample.i = 10;
}

416 :デフォルトの名無しさん:2010/04/10(土) 14:04:15
class MediumExam1
{
public static void main(String[] args)
{
MediumExam1 med=new MediumExam1();
CompareSample com=new CompareSample();
med.Mymethod(com);
System.out.println(com.i);
}

void Mymethod(CompareSample sample){
sample.i=10
}
}

class CompareSample
{
int i=5;
}

417 :デフォルトの名無しさん:2010/04/10(土) 14:50:02
>>413
void Mymethod(CompareSample sample){
}
sample.i+=(100+50)*20-2995;
}

418 :デフォルトの名無しさん:2010/04/10(土) 14:51:17
>>413
void Mymethod(CompareSample sample){
}
while (sample.i!=10) sample.i++;
}

419 :デフォルトの名無しさん:2010/04/10(土) 15:15:53
>>413
void Mymethod(CompareSample sample){
System.out.println(10);
System.exit(0);
}


420 :デフォルトの名無しさん:2010/04/10(土) 15:18:04
OSを再インストールしたらまたJavaもインストール出来ると思いますか?

421 :デフォルトの名無しさん:2010/04/10(土) 15:20:07
>>420
できる

422 :デフォルトの名無しさん:2010/04/10(土) 15:54:38

パッケージ xb.org とは何でしょうか?

423 :デフォルトの名無しさん:2010/04/10(土) 15:56:22
propertiesファイルを作る際に
native2ascii で半角スペースを \u0020 に変換したいのですができないのでしょうか?

もしできない場合
半角スペースも含めたツールでのunicodeへの変換方法があったら教えてください

424 :デフォルトの名無しさん:2010/04/10(土) 16:37:47
Propertiesで使うからこそのnative2asciiだろ?
別の用途で使うっていうならスレ違い。

425 :デフォルトの名無しさん:2010/04/10(土) 16:57:28
言葉足らずでした。Propertiesでちゃんと使っています

propertiesファイルの中で
Key=[値]
の[値]の中に半角空白を含めたいのですが、\u0020と書くとちゃんと半角空白を取得してくれるのに
そのpropertiesファイルを作るnative2asciiでは\u0020に変換してくれないのです

426 :デフォルトの名無しさん:2010/04/10(土) 19:44:46
>>425
半角空白をそのままpropertiesに書くと都合が悪いってこと?


427 :デフォルトの名無しさん:2010/04/10(土) 20:08:36
カーネル2.6系のLinuxでJavaアプリを動かしているのですが、lsofコマンドを打つと、そのJavaアプリがかなりの量のpipeを使用しているように見えてます。
ちょうどここhttp://naruhodo.television.co.jp/qa3899162.htmlで質問されている方と全く同じ現象なのですが、これは一旦なんなんでしょうか。
JavaからRuntimeでコマンドを実行したりしていますが、それが原因なのでしょうか。Runtimeのインスタンスには、使い終わったあと nullを突っ込んだりはしていませんが、それが原因でしょうか。
いずれにしても、この数がRuntimeでコマンドを実行するたびに増えていっています。
このままですと、リソースを食いつぶすのではないかと考えています。
何か手だてはありませんでしょうか。

ちなみに、/proc/sys/fs/file-nrを確認しましたが、特に増えて行く様子はありません。

428 :デフォルトの名無しさん:2010/04/10(土) 20:52:33
なるほど、Properties は前の空白は除去する仕様だからか。
それの回避には、元ファイルで
key=\u0020値
とコード番号で書いておいて、それを native2ascii に通せばいいんだよ。

[元ファイル]
a=\u0020
b=\u0020a 漢字

[native2ascii実施後のファイル]
a=\u0020
b=\u0020a \u6f22\u5b57

となる。

429 :デフォルトの名無しさん:2010/04/10(土) 22:05:54
一枚の画像の特定の場所に、何度も文字列を挿入してそれぞれ保存するという処理を書きたいのですが、
パフォーマンスを考えてbufferedImageの複製に直接描画するのではなく、以下サイトの解説にあるプルモデルで実装したいと思っています。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/2d/spec/j2d-image.html#wp65661

良いサンプルコードを掲載してるサイトは有るでしょうか?


430 :デフォルトの名無しさん:2010/04/11(日) 00:57:07
>>429
これは・・・使い方が想像もつかない・・・
ContextualRenderedImageFactory の実装って自作するのかな?
ParameterBlock なんか ClassCastException 起しかねない無茶苦茶な実装だし。
Graphics2D の実装から見ていかないと使い方わからんね。
使ってるサンプルとかも見つからないし、なんかもうSUNの冗談かと思いたくなってきた。

俺なら諦めてBufferdImageに書いちゃうな、もう。

431 :デフォルトの名無しさん:2010/04/11(日) 02:51:32
複製してる時点で明らかに遅そうとしか。

432 :デフォルトの名無しさん:2010/04/11(日) 08:43:13
すみません、超初歩的な質問なんですが・・

private final LinkedList<クラス名A> queue = new LinkedList<クラス名A>();

queueの型がクラスLinkedListと<クラス名A>の2重の型で指定されているように
見えるのですが
<クラス名>の<>で囲んだクラス名で変数を指定するとどういう意味があるのでしょうか?
また、<>で囲む方式の名称ってありますでしょうか?

昔は、<クラス名>で変数を指定したことは無かった気がします。。。

433 :デフォルトの名無しさん:2010/04/11(日) 08:55:14
>>432
ttp://www.javainthebox.net/laboratory/J2SE1.5/LangSpec/Generics/Generics.html

冗長で無駄に見えるが、今のところこう書くしかない。変数とオブジェクトで型が違う可能性もあるし。

private final List<クラス名A> queue = new LinkedList<クラス名A>();

Javaにも、C#のvarみたいな型推論が欲しいね。

434 :432:2010/04/11(日) 09:05:47
>>433
Genericsっていうんですね。
ありがとうございますm(__)m

435 :デフォルトの名無しさん:2010/04/11(日) 10:26:51
質問です

V2CやeclipseなどのJava製のソフトを使っていると、
しばらく放置してから触るとGUIの反応が一時的に悪くなったあと
すぐに反応が元通りになるですけど、これはどういう理由からなのでしょうか?


436 :デフォルトの名無しさん:2010/04/11(日) 10:37:03
メモリがスワップアウトされてるか、弱参照オブジェクトがGCされてるんじゃね?
放置したアプリを触ったときに一時的に重くなるのは必然だと思うよ。
会社のヘタレマシンだとそれ以上にAdobeReaderが酷かったりする。

437 :デフォルトの名無しさん:2010/04/11(日) 10:48:59
>>436
世代別GCの弊害ですか。
ありがとうございます。

438 :デフォルトの名無しさん:2010/04/11(日) 10:57:14
納得の行く、どうにもならない理屈が付けられる場合、気にすることにメリットが
あるかな?という程度。

439 :デフォルトの名無しさん:2010/04/11(日) 11:02:28
TrueType Collection(.ttc)形式のファイルに含まれているフォントを、
(出来れば標準ライブラリで)全て読み込む方法があれば教えてください。

440 :デフォルトの名無しさん:2010/04/11(日) 11:05:22
>>438
どうにかなるかならないかは質問者次第では?
どうにも我慢できないなら、言語を変えるとか、VMを自作するとか、いろいろ方法はあるよね。

441 :デフォルトの名無しさん:2010/04/11(日) 12:33:32
質問者次第==(質問者に)メリットがあるか、だね。
自作のアプリならメモリ使用量を見直してみるとかあっても、V2Cとかeclipseじゃなぁ。
VM自作って考えたこともないけど、簡単なの?

442 :デフォルトの名無しさん:2010/04/11(日) 14:25:00
かなり以前に、お絵描きアプレットに適した云々で質問したものです。
今更ですが、御回答ありがとうございました。
何用途向けは若干わかったのですが、お絵描きアプレットにどれが適しているかまでは
分からなかったので、とりあえず引き続きプログラムの学習を続けようと思います。

その学習の一環で、上位フォルダのファイルの拡張子でフォルダを作り、そこに移動させる
自作プログラムを作りました。(ただし振るスクラッチではなく、講座サイトなどのソースを見て、
このクラスが使えそうかなという感じで)
このソフトを色々と拡張しようと思っているのですが、いくつかご相談をお願いします。

1 拡張子がmp3のとき、ID3タグを付与しようと思っています。
-1.文字列を16進法のバイナリに変換して、そのまま書き込むいい方法
-2.ファイル冒頭に任意のバイト数を追記する方法

2 任意のフォルダの場所で実行や、拡張子別に動作を分けるなど考えています
-1.プロパティファイルを書き込むためのクラス

3 高速化について
-1.一般的なfor文とfor(byte i = (byte)test.length();i != 0;i--)のコスト差
-2.条件分岐を減らす方法
-3.マルチスレッド化
-4.それ以外の高速化の方法

次のレスに詳細を書き込みます。

443 :デフォルトの名無しさん:2010/04/11(日) 14:27:23
1-1
 ID3v1なら末尾に付与のためfilewriter()で何とか出来そうなのですが、全半角両方が
一文字と認識されてしまうため、仕様の30文字制限の処理が上手くいきません。
 そこでバイナリエディタで確認できる文字列に変換し、それで処理しようと考えています。
 文字を(byte)で変換したり、intにcharを代入したりしましたが、上手くいきません
1-2
 ID3v2の場合、ファイル冒頭に追記します。filewriter()だと末尾追記か全消ししかないため
使えそうにありません。何かいいクラスはないでしょうか?

2-1
 ユーザーが入力した任意の文字列を取得するのに、プロパティファイルを使うのがちょうどいいと
思ったのですが、読み込む側の解説は充実していても書き込む側がさっぱりでした。
 もし書き込みクラスというのがあればご教示お願いします。

3 これを作る一環で、必要はないと思いますが、偶然高速化についての記事を読みました。その記事では
3-1
 for文の条件式はコストがかかると書いてました。128以下のfor文でカウンターを使わないなら、
質問文中のようにしようと考えました。これについて問題があるか否か。 
3-2
 if文はパイプライン処理が途切れるため遅くなると書いてました。nullについては例外を使って出来ましたが、
それ以外に何か減らすコツのようなものはありますか?
3-3
 マルチコアならマルチスレッドは有効だと書いてました。スレッド化自体は講座サイトで分かるのですが、
より有効で実践的なマルチスレッドにするにはどのような考え方でマルチスレッドすればいいのでしょうか?

3-4
 大雑把な質問で申し訳ないのですが、それ以外に何か高速化する手段があればご教示お願いします。

444 :デフォルトの名無しさん:2010/04/11(日) 15:00:54
>>430,431

ありがとうございます。とりあえずbufferedImageの複製コースで今は実装してます。
ビルダーのjavadocを見ても全然わからんしやっぱりあんまり使われてないんですね…
遅延評価が出来そう?な感じで使えば良いものそうなのに残念なドキュメントです。

445 :デフォルトの名無しさん:2010/04/11(日) 15:20:02
>>442
1-1
String のメソッドか、java.nio.charset.CharsetEncoder を調べる。
1-2
java.io.RandomAccessFile を調べる。
2-1
java.util.Properties を調べる。
3
上の情報を自分で把握できないレベルじゃ無駄無駄無駄無駄無駄無駄。

446 :デフォルトの名無しさん:2010/04/11(日) 16:14:50
>>445
ありがとうございます。
>1-1
>1-2
Stringメソッドでそれらしい戻り値のは試してたのですが、今度は総当りでやってみます。
またそれ以外のメソッドも、今の読み取り能力ではいまいち理解できませんが、
とにかく試験的に使ってみてどのようになるか見てみようと思います。

>2-1
うっかりしていました。API自体は見ていたのですが、何故かset〜に気づかずないないと
思い込んでしまっていました。
そのせいで検索ワードも必要ない単語を混ぜて検索ばかり…。
講座サイトにも、初期のころに見つけたサイトに普通に書いてました…。

>3
おっしゃるとおり。ちょっと色気を出しすぎました。
とりあえず教えていただいた情報から、引き続き拡張してみたいと思います。

447 :デフォルトの名無しさん:2010/04/11(日) 16:34:54
String namae[] = {"hoko", "yoko", "maki"};


char[] kae = namae[0].toCharArray();

String.valueOf(kae);


if(kae[0].equals("h")){
System.out.println(kae[0]);}

char型の配列をstringにして比較したいのですが
これだと charは間接参照できませんとでます。
どうすればいいでしょうか

448 :デフォルトの名無しさん:2010/04/11(日) 16:42:59
漢字使うならID3v2で"UTF-8"か"UTF-16"か"UTF-16BE"。詳しくは仕様書。

449 :デフォルトの名無しさん:2010/04/11(日) 16:48:51
>>447
kae[0] == 'h' でおk

450 :デフォルトの名無しさん:2010/04/11(日) 16:51:33
>>447
if(kae[0]=='h'){
もしくは
if(Character.valueOf(kae[0]).equals('h')){

charはプリミティブであってオブジェクトじゃない。

451 :デフォルトの名無しさん:2010/04/11(日) 16:56:12
文字関係は微妙だよねぇ・・・

452 :デフォルトの名無しさん:2010/04/11(日) 16:58:06
>>449>>450
有難うございます。 後者だとできました
kae[0] == 'h'  だとエラーになりました
もっと勉強してみます

453 :デフォルトの名無しさん:2010/04/11(日) 17:11:33
>>452
エラーが出たのはもしかして ' (シングルクォート)ではなく " (ダブルクォート)を使ったのでは?

454 :デフォルトの名無しさん:2010/04/11(日) 17:22:12
そのとおりでしたw まだまだわからんことだらけです

455 :デフォルトの名無しさん:2010/04/11(日) 19:11:50
中級車向けの学習に適している
オープンソースを教えてください。

456 :デフォルトの名無しさん:2010/04/11(日) 21:52:57
例外処理でfinallyを使う意味がわかりません。

try{

}catch(Exception e){

}
//この部分は必ず実行されるのでは?

457 :デフォルトの名無しさん:2010/04/11(日) 22:08:52
URL url = new URL("http://www.aaa.co.jp/image.jpg");
HttpURLConnection http = (HttpURLConnection)url.openConnection();
http.setRequestMethod("GET");
http.connect();
InputStream in = http.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(in);
in.close();
http.disconnect();

としているのですが、指定urlにファイルがなかった場合、urlを指定した別のものに変えたい場合はどうすればいいのでしょうか?

458 :デフォルトの名無しさん:2010/04/11(日) 22:25:15
>>456
out.println("a");
try {
out.println("b");
if(true)throw new IOException();
//if(true)throw new Exception();
out.println("c");
} catch (IOException e) {
out.println("d");
if(true)throw new Exception();
out.println("e");
}finally{
out.println("f");
}
out.println("g");

a-b-d-f
//外したException投げるほうだとa-b-f
ともにgは出力されない

459 :デフォルトの名無しさん:2010/04/11(日) 22:32:09
>>457
IOExceptionキャッチして呼びなおせばいいじゃない

460 :デフォルトの名無しさん:2010/04/11(日) 22:58:44
>>459
なるほど・・・Exceptionにはエラー吐かせることしか考えてませんでした。
ありがとうございます。

461 :デフォルトの名無しさん:2010/04/11(日) 22:59:25
>>456
>>458 が書いているような
catch ブロックの中で例外が投げられるケースに加えて、
try や catch ブロックの中で return した場合でも、
後の部分は実行されない。
finally ブロックを書けば必ず実行される。


462 :デフォルトの名無しさん:2010/04/11(日) 23:02:58
>>461
returnもそうなんだ シランカッタ
break continueとかもなのかな

463 :デフォルトの名無しさん:2010/04/11(日) 23:03:54
>>456
catchした例外を例えば別の例外にラップしてスローしたら、以降の部分は実行されない。
try{

}catch(Exception e){
throw new RuntimeException(e);
}
// 実行されない

464 :デフォルトの名無しさん:2010/04/11(日) 23:33:50
>>456
まぁ, Lisp の unwind-protect を物まねしてみただけだ


465 :デフォルトの名無しさん:2010/04/12(月) 00:27:38
try{

}finally{
}
なんかで、例外は呼び出し元に処理させるって手も。

466 :デフォルトの名無しさん:2010/04/12(月) 00:56:58
finally内のコードって例外出ようが出なかろうが処理されるんだっけ?
catch内でreturnとかした場合でもfinallyって処理されるんだっけ?


467 :デフォルトの名無しさん:2010/04/12(月) 01:01:46
>>466
される

468 :456:2010/04/12(月) 01:02:25
なるほど参考になりました。

まとめるとfinallyを書かないと実行されないのは以下の通りですか?

・別の例外がスローされた場合
・returnされた場合


ふと気になったのは
アプリが途中で落ちた場合(exitなど)
はどうなるんだろう。。

469 :デフォルトの名無しさん:2010/04/12(月) 01:04:18
今やったら
exitの場合はfinallyに到達しませんでした。
exitしたところで終了

470 :デフォルトの名無しさん:2010/04/12(月) 01:11:37
例外の扱い方を詳しく書いた本ありませんか?
処理自体はわかるけど例外を効果的に使った設計方法がよくわかりません。

471 :デフォルトの名無しさん:2010/04/12(月) 01:32:35
finally内でエラーが発生した場合どうなるの?

472 :デフォルトの名無しさん:2010/04/12(月) 07:35:47
>>471
それが例外をthrowしたって事なら、finallyでthrowした例外が優先。

473 :デフォルトの名無しさん:2010/04/12(月) 09:01:38
>>470
いろんなフレームワーク見ると
RuntimeExceptionを継承した自前のクラス作って
業務層でそれを投げて
コントローラーでハンドリングってのが定番になってる

以下、おれの経験だからみんなどうしてるか聞きたいんだけど

おれがWebシステムでよくやるのが
RuntimeExceptionを継承した親クラスを2種類作って
それぞれの例外クラスはどちらかを継承

・継続利用不可能なシステムエラー
  データ不整合とかバグとかなんらかの対処をしなきゃいけない
  ユーザのログインセッションも切断
・継続利用可能な業務エラー
  2重更新など
  ユーザにはエラーメッセージを表示して利用継続

以上、反論は受付は受け付ける

474 :デフォルトの名無しさん:2010/04/12(月) 10:39:21
システムエラー以外に例外は投げるべきではないとか言ってた アフォ はまだ居るのかな。

475 :デフォルトの名無しさん:2010/04/12(月) 11:25:55
>>470
オライリーの『Java魂』(ライオン本)あたりはいかがですか?
第5章を立ち読みするだけども可。

476 :デフォルトの名無しさん:2010/04/12(月) 19:54:47
>>470
チュートリアル

477 :デフォルトの名無しさん:2010/04/12(月) 21:40:44
WebアプリケーションでURLクラスのsetURLStreamHandlerFactoryでハンドらをセットしたいのですが、
これってひとつのアプリケーションを飛び越えて、webコンテナ含むランタイム共通の設定になってしまうんですよね?

てことは、複数アプリが動く環境では呼ぶべきじゃないものでしょうか?

ファイルアクセス、インターネットアクセスできない環境でURLを引数に持つクラスを使いたくて、
memory://id みたいな感じで、メモリ経由(HashMapだけど…)でデータの送受信をしたいのですが…
URLクラスをごまかす、いい方法って他にないでしょうか?

なんでURLはfinalなんだよ…

478 :デフォルトの名無しさん:2010/04/12(月) 21:47:50
Effective Javaの例外ってどうよ?

479 :デフォルトの名無しさん:2010/04/12(月) 22:01:18
>>478
具体的にどんなことがかいてあるん?

480 :デフォルトの名無しさん:2010/04/12(月) 22:27:36
>>477
ソース見ると、単にクラス変数にセットしてるだけだから、クラスローダごとに
独立しているはず。
別のアプリに影響はないと思うんだが、実際にやってみたら違った?

481 :デフォルトの名無しさん:2010/04/12(月) 22:31:24
jqGridが超イケてるんで似非Ajaxしようとしてるんですけども、
サーブレット(又はjsp)で、JSON書き出してjqGridにロードする
場合

検索フォームのボタン押す
 ↓
ServletへクエリPOST(DB検索)
 ↓
ServletでJSONObject/JSONArrayを作成
 ↓
???

ここからどうしたらいいんでせうか。
Beanなり、Session変数で受け取ると、ドキュメント(というか
javascript内)にゴリゴリ検索結果のJSON書きつけることになるので
ちょっと微妙なんじゃないかと思うんですが・・・
外部JSONをjspで作る場合、jqGridのスクリプトを含んだメインページに
再度リダイレクトさせる必要があると思うのですが、どうも上手く表示が
できませぬ。ボスケテ。

482 :481:2010/04/12(月) 22:33:55
言葉が変でした。

×リダイレクト
○フォワード

483 :デフォルトの名無しさん:2010/04/12(月) 23:08:49
プログラミングエラーか設定異常か外部システムに起因するトラブル以外で
例外起こしてるならただのヘボシステムだろ。
ちゃんとチェックしてから処理しろよ。

484 :デフォルトの名無しさん:2010/04/13(火) 00:01:00
>>480
クラスローダごとにって、java.net.URL みたいな基本的なクラスを別々のクラスローダで読み込むのか?

485 :デフォルトの名無しさん:2010/04/13(火) 00:30:59
>>483
コントローラー

ファサード

業務ロジック

ってなってるときに
業務層で2重更新がわかったらどうしてる?

486 :デフォルトの名無しさん:2010/04/13(火) 03:11:21
>>477
javadocに「このメソッドは、使用する Java 仮想マシンで 1 回しか呼び出せません。」と
書いてあるから、設定したら他のWebアプリにも影響与えるね。

この辺はサーブレットコンテナ依存なんで一概には言えないが、Tomcatの場合
Java SE付属のクラスは、TomcatのVM全体で共有されるクラスローダに読み込まれる。
これは>>484も懸念するとおり。
他のWebアプリはおろか、Tomcat自体の動作にも影響を与える。

URLクラスを使うのは無理っぽいね。代わりにStringか独自インタフェースでリソース名を指定するようにして、
リソース名→ストリームへの変換を独自のファクトリで行うようにするしかないんじゃないかな。
ちなみに、Eclipseは中でそうやってて、FileやURLの代わりに
org.eclipse.core.resources.IResourceというインタフェースで
リソースを表現している。

487 :デフォルトの名無しさん:2010/04/13(火) 03:22:23
>>481
テーブルを表示するページの処理と、検索結果としてJSONを返す処理の2つを作る。
ページの作り方を変えて、検索フォームと検索結果を同一ページで表示するようにして、
検索時にはページ遷移せず、AjaxでJSONもらってjqGridに表示するだけにすればいい。
jQureyなら、getJSON使えばURL指定でJSONをもらえるので、これを使う。

それが嫌なら、>>481の案通り、検索結果表示部と検索結果のJSONがすべて入ったJSPを送り返すしか。

488 :デフォルトの名無しさん:2010/04/13(火) 07:47:55
>>477
URL のインスタンスが必要なだけならコンストラクタに URLStreamHandler を
取るのがあるからそれ使え。Factory の実装が必要なのは任意の文字列から
URL インスタンスを作る場合。

new URL("memory", "", 0, "1234", new MemoryURLStreamHandler());

489 :デフォルトの名無しさん:2010/04/13(火) 08:03:26
親切な補足:
Map<String,byte[]> cache = new HashMap<String,byte[]>();

class MemoryURLConnection{
   public void open(){ }
   public InputStream getInputStream(){
       return new ByteArrayInputStream(cache.get(getURL().getPath()));
   }
}

class MemoryURLStreamHandler{
   public URLConnection openConnection(){ new MemoryURLConnection(); }
}

ちなみに USB ライブラリ作ったときにバルク転送 (双方向通信) の上位インターフェースを
こんな感じで URL オブジェクトで返すようにしたことがある。あと関連としてプロトコルには
x- 付けとけ。

490 :デフォルトの名無しさん:2010/04/13(火) 10:08:38
>>489
コンストラクタまで目がいってなかったっす…
目からうろこ…
ありがとうございます。

491 :デフォルトの名無しさん:2010/04/13(火) 10:39:22
>>489
プロトコルにはx- 付けとけって、その心は?

492 :デフォルトの名無しさん:2010/04/13(火) 10:51:01
標準ではないって事を明白にしといた方がいいって事だと思うが

493 :デフォルトの名無しさん:2010/04/13(火) 11:15:43
×関連
○慣例

RFC 1738 Uniform Resource Locators (URL)

4. REGISTRATION OF NEW SCHEMES
  A new scheme may be introduced by defining a mapping onto a
  conforming URL syntax, using a new prefix. URLs for experimental
  schemes may be used by mutual agreement between parties. Scheme names
  starting with the characters "x-" are reserved for experimental
  purposes.

494 :デフォルトの名無しさん:2010/04/13(火) 12:02:32
JDKをインストールすると、"C:\Program Files\Java\jdk1.6.0_19\bin\java.exe"
がインストールされて、さらにその後 JREのインストールが始まって、
"C:\Program Files\Java\jre6\bin\java.exe" がインストールされるんだけど、
なんで二重にインストールされるの?

495 :494:2010/04/13(火) 12:15:00
自己レス

完全に解決したわけじゃないけど、以下の投稿を見てなんとなくわかった。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19574&forum=12

496 :デフォルトの名無しさん:2010/04/13(火) 12:20:49
>>494
なんとなくわかったんなら
わかった部分でも書いた方がよいよ

ひょっとしたら間違ってて
ほかの人に訂正してもらえるかもしれんし
あっ、なるほどと思って
自分の考えを改める人がいるかもしれん

497 :494:2010/04/13(火) 12:55:16
現時点での俺の理解だと

JREによってインストールされる "C:\Program Files\Java\jre6\" 以下のファイル群は
公開JREと言って色んなアプリから参照されるためのもの。
アプリケーションの追加と削除に表示される。

JDKによってインストールされる "C:\Program Files\Java\jdk1.6.0_19\jre" 以下のファイル群は
非公開 JRE と言って JDK自身が使うためのもの。

公開JRE と 非公開JRE には機能的な違いはほとんどない。
ここまではなんとなくわかった。

未だ謎なのは上記2つの他に "C:\Program Files\Java\jdk1.6.0_19\bin\java.exe" など
非公開JRE でも 公開JRE にも分類されない変な場所に JRE の一部と思われるファイルがある事。

498 :494:2010/04/13(火) 12:56:44
修正

× 非公開JRE でも 公開JRE にも分類されない
○ 非公開JRE にも 公開JRE にも分類されない

499 :デフォルトの名無しさん:2010/04/13(火) 13:17:43
1.6.0_19にアップデートしたらアプレットが動かなくなりました。
どうやらjavaコンソールの、詳細→セキュリティに「混合コード (サンドボックス内実行 vs. 信頼済み) セキュリティー検証」が追加され
デフォルトが有効になっているのが原因。

ライブラリのapache関連jarも使用しているので、署名付きと非署名はだめになってしまう…

しかも署名したjarにあるクラスからgetResouseでファイルアクセスしてもダメ。えっなぜ?
さらにAsStreamならOK。なんで?

いったいどーいうことなんだべさ

500 :デフォルトの名無しさん:2010/04/13(火) 13:23:13
webコンテナのスレッドってアプリケーションごとに生成&管理されるのが仕様?

そうだと、webでThreadLocal使うとやばいよね?

501 :デフォルトの名無しさん:2010/04/13(火) 13:25:59
まず、重要なのはjava.exeとjavac.exe
java.exeはJavaを実行するのに必要(JREとJDKにある)
javac.exeはコンパイルするのに必要(JDKのみ)

Sunの意図としては
Javaを意識せずに使うアプリはJREを使ってね
ふつーの人はそもそもこっちしかインストールしないし
こっちは常に最新にしておいてほしい
JavaWebStartで更新されるのはこっちだけ
いずれシステムトレイにJavaを更新してくださいって出るよ

で、開発するときはバージョンを変更するかもしれないのでJDKを使ってね
こっちは1.4でも1.5でも1.6でもたくさんいれて設定を切り替えてね

502 :デフォルトの名無しさん:2010/04/13(火) 13:34:08
>>500
そんなことないよ
スレッドが10個とか(設定により変わる)立ち上がって待ってて
クライアントからのリクエスト毎に割り当てられて
処理が終わったら、また待ちになる

銀行の窓口が10個あると思えばいい

で、ThreadLocalは窓口ごとに紐づくから
処理の最初と最後で初期化とかきちんとすればおっけー

リクエストしてきたユーザの情報とか
いちいちメソッドの引数で持ちまわしたくないようなもんを
突っ込んどくことが多い

503 :デフォルトの名無しさん:2010/04/13(火) 14:03:24
Timer t = new Timer();
t.schedule(ts1,1,500);
t.schedule(ts2,1,500);
t.schedule(ts3,1,500);


登録したタスクのts2だけを削除することはできないのでしょうか?
やはり再構築?

504 :デフォルトの名無しさん:2010/04/13(火) 14:05:15
>>503
ts2.cancel();
じゃ、だめなん?

505 :デフォルトの名無しさん:2010/04/13(火) 16:08:49
ClassのgetResourceとgetResourceAsStreamについてですが
同じリソースに上記メソッドで一度アクセスし、ファイルを変更して2度目のアクセスを試みると
内容が変更前のままに。

javadocはクラスローダの実装によるみたいな事を書いてありますが、
常に最新のものを読み込むとは限らないので、その場合上記メソッドは使用しない方がいい?

というか、ばかでかいファイルファイル読むとメモリに持ち続けるってこと!?

506 :デフォルトの名無しさん:2010/04/13(火) 18:53:00
>>504
あ、そんなのがあったんですね。ありがとうございます。

507 :デフォルトの名無しさん:2010/04/13(火) 20:12:53
>>505
そうだよ。

508 :デフォルトの名無しさん:2010/04/13(火) 22:50:48
>>494
VMにはクライアントVMとサーバーVMがあってJREの方にはクライアントVMしか実装されてない。
とかいろいろ違う。
JAVA_HOMEの下にjre/server/binがあったりする。winにはなかった気がするが。


509 :デフォルトの名無しさん:2010/04/13(火) 23:31:05
>>505
ちがうよ。

510 :デフォルトの名無しさん:2010/04/14(水) 09:23:29
>>509
言えることはクラスローダーによって違う(オーバーライドできる)から、
何とも言えないということがいえる

511 :デフォルトの名無しさん:2010/04/14(水) 11:12:21
アプレットでURLクラスを使いファイルをopenStreamするとどうもキャッシュされた値を返すようで、
サーバにリクエストが来ません。
キャッシュを使わないようにする方法はありましたら教えてください。

512 :デフォルトの名無しさん:2010/04/14(水) 11:25:48
>>511
URL#openStream を使う代わりに、
URL#openConnection で URLConnection を取得して、
URLConnection#setUseCaches と URLConnection#getInputStream を使うとか?

513 :デフォルトの名無しさん:2010/04/14(水) 11:45:27
>>512
できました。
ありがとうございます。

514 :デフォルトの名無しさん:2010/04/14(水) 14:33:18
Properties loadFromXML で 以下のエラーが出ます。

java.util.InvalidPropertiesFormatException: org.xml.sax.SAXParseException: Invalid byte 1 of 1-byte UTF-8 sequence.


ファイルはUTF-8ボムなしです。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>



</properties>

515 :デフォルトの名無しさん:2010/04/14(水) 17:00:24
apache系のjarにサインされたjarって配布されているのでしょうか?

516 :デフォルトの名無しさん:2010/04/14(水) 17:02:47
>>514
そうですか。

517 :デフォルトの名無しさん:2010/04/15(木) 10:22:10
エンコードしなくてもいいProperties代替クラスってないですかね。
現地でeclipseがないから直せないし、お客で変えてもらうこともできない。
アプリでnative2asci呼べまいいんだけど、JREでだめだし。。。あーめんどい

518 :デフォルトの名無しさん:2010/04/15(木) 12:16:08
>>517
eclipse 使ってれば、プロパティエディタで一発なんだが。

519 :デフォルトの名無しさん:2010/04/15(木) 12:23:31
>>517
Propertiesをextendsすれば?
あとは、native2ascii呼ぶというより自前で実装するか

520 :デフォルトの名無しさん:2010/04/15(木) 12:56:36
だから XML にすりゃ良いだろ。

521 :デフォルトの名無しさん:2010/04/15(木) 13:37:59
>>517
お前は勉強が足りないな
一言でいえば、低能
native2asciiなんて猿くらいしか使わんよ

522 :デフォルトの名無しさん:2010/04/15(木) 14:34:29
●その1
while(true) {
 n=request(); //0〜Nの値を返す
 switch (n){
 case 0:
  ここに処理を全部書く
  break;
 case 1:
  ここに処理を全部書く
  break;
 ...
 case N:
  ここに処理を全部書く
  break;
 default:
  System.out.println("Error");
}}

●その2
while(true) {
 n=request(); //0〜Nの値を返す
 switch(n) {
 case 0: shori0(); break; //処理を全部書いたメソッドshori0()を実行する
 case 1: shori1(); break; //処理を全部書いたメソッドshori1()を実行する
 ...
 case N: shoriN(); break; //処理を全部書いたメソッドshoriN()を実行する
 default: System.out.println("Error");
}}

523 :522:2010/04/15(木) 14:35:09
●その3
Shori[] shori=new Shori[N+1]; //メソッドjikkouを持つスーパークラス
Shori shori[0]=new Shori0(); //処理書いたShoriのサブクラス
Shori shori[1]=new Shori1();
...
Shori shori[N]=new ShoriN();
while(true) {
 n=request(); //0〜Nの値を返す
 try {
  shori[n].jikkou();
 } catch(Exception e) {
  System.out.println("Error");
 }
}

その1〜その3でそれぞれの処理方法の
特徴の違いって何?どれで作ったほうがいい?
ちなみに仕様変更とかで新しく処理加える可能性があるとして
どれの使ったほうがいいの?
プログラミング初心者なんでよくわかんないっす


524 :522:2010/04/15(木) 14:38:05
言い忘れてました
>>523
その3のShoriのサブクラスはjikkouメソッドをオーバーライドして処理を個別に変えてます

525 :デフォルトの名無しさん:2010/04/15(木) 14:44:59
class base
{
void hoge();
};

class bbb extends base
{
void hoge();
}

while(true)
bbb.hoge();

テキトー

526 :522:2010/04/15(木) 14:45:32
>>523でミスがもうひとつ
Shori shori[0]=new Shori0(); //処理書いたShoriのサブクラス
Shori shori[1]=new Shori1();
...
Shori shori[N]=new ShoriN();

shori[0]=new Shori0(); //処理書いたShoriのサブクラス
shori[1]=new Shori1();
...
shori[N]=new ShoriN();
すこしよけいな文字が入ってました


527 :デフォルトの名無しさん:2010/04/15(木) 14:55:48
>>526
プログラムのセンスというか人として終わってるから

528 :デフォルトの名無しさん:2010/04/15(木) 14:59:44
程度の低い質問

529 :デフォルトの名無しさん:2010/04/15(木) 15:05:09
初心者のくせに態度がでかい

530 :デフォルトの名無しさん:2010/04/15(木) 15:06:21
>>523
1〜3どれもねーよ

531 :デフォルトの名無しさん:2010/04/15(木) 15:11:58
これはひどい

532 :デフォルトの名無しさん:2010/04/15(木) 15:15:27
プログラミングに不向きな人は何作ってもダメなものしかできない

533 :デフォルトの名無しさん:2010/04/15(木) 15:54:32
たしかに>>529は初心者のくせに態度がでかい

534 :デフォルトの名無しさん:2010/04/15(木) 16:23:48
回答初心者なんでよくわかんないっす

535 :デフォルトの名無しさん:2010/04/15(木) 16:30:15
>>522
数値とクラスのマップを持っとく
Map m = new HashMap();
m.put("0", new Shori());
・・・



536 :デフォルトの名無しさん:2010/04/15(木) 16:46:06
>>534
引っこんでろ

537 :デフォルトの名無しさん:2010/04/15(木) 16:51:59
ググると答えがでるって ばあちゃんが言ってた

538 :デフォルトの名無しさん:2010/04/15(木) 16:54:35
>>535
何でキーが文字列
Integerで良いじゃないか。

539 :デフォルトの名無しさん:2010/04/15(木) 17:17:29
IteratorをSetに変更したいのですが、どうすればいいでしょうか?

540 :デフォルトの名無しさん:2010/04/15(木) 17:24:18
>>539
Iteratorにする前にする
無理なら回すしかないんじゃね?

541 :デフォルトの名無しさん:2010/04/15(木) 17:27:15
>>525
なぜabstract

542 :デフォルトの名無しさん:2010/04/15(木) 17:48:45
>>540
new ArrayList()にあたるSetって何になります。
そういえばSetなんてnewしたことないや。

543 :デフォルトの名無しさん:2010/04/15(木) 18:00:40
>>542
それくらい調べろよ

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Set.html
ここの既知の実装クラスの一覧

HashSet
LinkedHashSet→いれた順序を保持
TreeSet→ソートされる

544 :デフォルトの名無しさん:2010/04/15(木) 18:06:27
>>517
探したら一発であったな
org.apache.commons.collectionsExtendedProperties
無駄に高機能
そしてなぜか要素ごとに改行が入る

545 :デフォルトの名無しさん:2010/04/15(木) 18:59:03
>>544
文字化ける・・・

546 :デフォルトの名無しさん:2010/04/15(木) 19:08:05
>>545
いやうそ、化けなかった

547 :デフォルトの名無しさん:2010/04/15(木) 19:14:23
>>518
プロパティエディタに関してもNetBeansの方がプロ向きだな。

548 :デフォルトの名無しさん:2010/04/15(木) 22:36:47
\\server\foo\hoge.txt を File から URL に変換すると file://server/foo/hoge.txt になる。
その URL から InputStream をとろうとすると失敗するんだけどどうすりゃいいの?
スタックトレースを見ると何故か FTP で逝ってるっぽい…

java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
at sun.net.NetworkClient.openServer(NetworkClient.java:118)
at sun.net.ftp.FtpClient.openServer(FtpClient.java:488)
at sun.net.ftp.FtpClient.openServer(FtpClient.java:475)
at sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:270)
at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:352)
at java.net.URL.openStream(URL.java:1007)

549 :デフォルトの名無しさん:2010/04/16(金) 00:50:07
>>548
普通に実行できるからわからない…

public static void main(String[] args) throws java.io.IOException {
java.io.File file = new java.io.File("\\\\server\\foo\\hoge.txt");
java.net.URL url = file.toURL();
System.out.println(url);

java.io.InputStream in = url.openStream();
java.util.Scanner scanner = new java.util.Scanner(in);
while(scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
in.close();
}

550 :デフォルトの名無しさん:2010/04/16(金) 00:55:56
>>648
もしかして、ファイル名をStringリテラルで表す時に、
"\\server\\foo\\hoge.txt"になってない?
UNCパス名なら"\\\\server\\foo\\hoge.txt"

551 :522:2010/04/16(金) 02:21:01
俺はどうすればいいんだ・・・

552 :デフォルトの名無しさん:2010/04/16(金) 02:30:22
>>548
ああそれ JDK 1.1 くらいの時代に見たことがあるなー。
いやただそれだけだがw

553 :デフォルトの名無しさん:2010/04/16(金) 02:42:44
>>551
じゃあ3で。

554 :デフォルトの名無しさん:2010/04/16(金) 02:50:04
Javaアプレットについて質問をさせてください。

画像を表示するアプレットを作成しようとしたのですが、画像がうまく表示されません。
画像データがなしでビルドしてもエラーが出ないので画像の読み込みがうまくできていないのかもしれません。
原因が分かる人いたらコメント願います。
※Eclipse3.5を使っていて"gazou.png"というファイルを読み込んで表示しようとしています。


package appletrennshuu;
import java.awt.Graphics;
import java.awt.Image;
import java.applet.*;
public class Appletrenshuu extends Applet {
Image image;
public void init(){
image=getImage(getCodeBase(),"gazou.png");
}
public void paint(Graphics g){
g.drawImage(image, 0,0,this);
}
}

555 :デフォルトの名無しさん:2010/04/16(金) 02:53:22
gazou.png をどこに置いてるか知らないが "appletrennshuu/gazou.png" だとどうだとエスパー魔美

556 :デフォルトの名無しさん:2010/04/16(金) 11:59:50
>>551
request が数なんか返さずに Shori の参照を返すようにするとか。
request().jikkou();
エラーハンドリングの位置が重要じゃなくなれば、 request の中で全部処理するようになるのだろう。
あと、Java には enum というのがある。

557 :デフォルトの名無しさん:2010/04/16(金) 13:41:45
そいつに構うな

558 :デフォルトの名無しさん:2010/04/16(金) 14:56:42
>>544
びみょぉ〜、書き込むときはエンコード指定してもunicodeエスケープしちゃう…

559 :デフォルトの名無しさん:2010/04/16(金) 15:19:31
>>555
無事表示されました。ありがとうございます。

560 :デフォルトの名無しさん:2010/04/16(金) 15:22:44
ワロタ1

561 :デフォルトの名無しさん:2010/04/16(金) 15:23:54
素人ばっかりだな

562 :デフォルトの名無しさん:2010/04/16(金) 15:26:34
オマエモナー

563 :デフォルトの名無しさん:2010/04/16(金) 16:21:24
>>555ありがとうございます。画像が表示できました。

564 :デフォルトの名無しさん:2010/04/16(金) 16:26:11
( ̄□ ̄;)!!

565 :デフォルトの名無しさん:2010/04/16(金) 17:57:24
配列よりもコレクションつかったほうがいいの?

566 :デフォルトの名無しさん:2010/04/16(金) 18:01:42
case by case

567 :デフォルトの名無しさん:2010/04/16(金) 18:02:29
face to face

568 :デフォルトの名無しさん:2010/04/16(金) 18:04:20
Set<E>とかClass<? extends Object>とか

< > ←のこのカッコが何か分からない
持ってるJava入門書が古いのか知らないけど< >のカッコとか全く出てこない
どっか初心者にも優しく説明してるサイトとかあったら教えてください

569 :デフォルトの名無しさん:2010/04/16(金) 18:09:24
いやです><

570 :デフォルトの名無しさん:2010/04/16(金) 18:13:10
Java5から登場したジェネリックスっていう機能
もう5年前ぐらいの話なのでその参考書は1.4時代のだいぶ古いやつだろうね
ぐぐればいっぱい出てくるよ

571 :デフォルトの名無しさん:2010/04/16(金) 18:15:10
>>568
Generics

Vector strings = new Vector();
strings.add("Hello Generics");
String s = (String)strings.get(0);
// 誤ってIntegerを追加できる
strings.add(new Integer(0));
Integer i = (Integer)strings.get(1);//実行時にclass cast exception

Vector<String> strings = new Vector<String>();
strings.add("Hello Generics");
String s = strings.get(0);//cast不要
strings.add(new Integer(0));//コンパイルエラー



572 :デフォルトの名無しさん:2010/04/16(金) 18:29:28
>>568
ただの比較演算子だよ
深い意味はない

573 :568:2010/04/16(金) 18:39:21
>>572
ありがとうございます
Set < E
E > null
ってことですね

574 :デフォルトの名無しさん:2010/04/16(金) 21:11:07
5.0からもう五年か。もう6がEOL待ちかよ。

575 :デフォルトの名無しさん:2010/04/17(土) 14:52:56
>>573
型引数で調べてみ。
慣れるとそこそこ便利。1.5から使える。

576 :568:2010/04/17(土) 16:17:12
Java5
ジェネリックス
Generics
型引数

教えていただきありがとうございます
ググってみます

577 :568:2010/04/17(土) 16:22:04
ちなみに>>573は私じゃありません。別人です

578 :デフォルトの名無しさん:2010/04/17(土) 17:13:39
デフォルトパッケージにAと言うクラスがあるとします。
また、パッケージtestにBと言うクラスがあるとします。
ここで、Bのソース内からAのクラスを使うように記載しようとすると参照できないのですがどのようにすればよいのでしょうか。
import A;とも書けません。

※なんでこんなことになったのかと言うと、上記のAのクラスはあるところから提供されていて
それをそのまま使うようにいわれたのですが、上記のようにエラーが発生して使えないのです。
ちなみにすべてのクラスをデフォルトパッケージにしてしまえば解決するのですが、
そういう方法以外にないものかと思いまして。。。

579 :デフォルトの名無しさん:2010/04/17(土) 17:29:39
Object a = Class.forName("A").newInstance();
// 以下全部リフレクション操作...

くらいしかできなかったような

580 :デフォルトの名無しさん:2010/04/17(土) 18:13:22
>>289 の件についてだけど
俺は英語として自然に読めるほうを使ってるんだけどどうかな。

if (!list.isEmpty()) ...
// if list is not empty ...

if (flag == false) ...
// if flag is false ...

if (!flag) ...
みたいな書き方は、どうも違和感を覚える。
if not flag?


581 :デフォルトの名無しさん:2010/04/17(土) 18:39:10
>>580
それはflagっていう変数の名前付けが悪いからでは?
flagの真偽値とそれの意味するところの関係が曖昧だから。

582 :デフォルトの名無しさん:2010/04/17(土) 18:52:38
>>580
>>289は、単純に変数名が悪いだけだと思うぞ。
変数名まともならどっちでもいいと思う。

ちなみに、AはBか?を問うときは、三単現でもおかしくないんだぜ。

583 :デフォルトの名無しさん:2010/04/17(土) 18:57:27
一例として flag っていう変数名を使ったけど、
要するに boolean 型の変数名とか boolean を返すメソッドの名前が
動詞句とか動詞の過去分詞形だと ! を使う方が自然ではないかという考え。


584 :デフォルトの名無しさん:2010/04/17(土) 19:01:03
if x is not y, x... という文を if not y, x... と書くのは普通にあるんじゃないか?

585 :デフォルトの名無しさん:2010/04/17(土) 19:25:53
プロフェッショナル
 〜コーディングの流儀〜

586 :デフォルトの名無しさん:2010/04/17(土) 19:27:10
余談だけど Peter van der Linden は、
  if (!no_data) ...
は二重否定 (not no data) で良くないので
  if (no_data)
    ; // 空文
  else
    ...
と書け、と言ってる。
ちょっと行き過ぎな気もするが、英語圏の人は気になるのか?

彼いわく
Double negatives don't unconfuse code,
so if the empty statement helps you never fail to avoid them, then don't not go for it.
(二重否定がコードを不明瞭にしないことはないので、
 そういった事態を避けることに失敗しないために空文が役立つ場合は、
 ぜひ使わないことをやめるといい)


587 :デフォルトの名無しさん:2010/04/17(土) 19:35:50
まず not_data なんて名前自体に否定を持たせるような名前は付けないとは考えなかったんだろうか。
溺れた人を助ける医者の話を思い出すわ。

588 :デフォルトの名無しさん:2010/04/17(土) 20:19:55
リーダー
bool よりも boolean
私はね これでjavaに決めたんだ


589 :デフォルトの名無しさん:2010/04/17(土) 21:36:22
ド・モルガンの法則がつかえるときは使えば多少ましになるよ。

590 :デフォルトの名無しさん:2010/04/17(土) 23:39:58
sun がoracleに飲み込まれて
javaの生みの親であるゴスリング氏やその他重要な人物が一身上の都合で辞めまくってるわけだが。

java終わった?

591 :デフォルトの名無しさん:2010/04/18(日) 08:06:52
終わった

592 :デフォルトの名無しさん:2010/04/18(日) 08:26:02
いまさらな話題だな

593 :デフォルトの名無しさん:2010/04/18(日) 11:00:01
http://pc11.2ch.net/test/read.cgi/hack/1019598968/

594 :デフォルトの名無しさん:2010/04/18(日) 11:21:23
なぜコンパイルエラーになるか教えてください。

class A{
public static void main(String args[]){
S ss=new S(1,2);
int aa=mm.geta();
int bb=mm.getb();
System.out.println(aa);
System.out.println(bb);
}
}
class S{
public void S(int a,int b){
M mm;
mm=new M();
mm.a=a;
mm.b=b;
}

}

class M{
int a;
int b;
public int geta(){
return a;
}
public int getb(){
return b;
}
}


595 :デフォルトの名無しさん:2010/04/18(日) 11:53:57
S(int,int)というコンストラクタが無いから

596 :デフォルトの名無しさん:2010/04/18(日) 12:21:22
4〜5行目のmmは?

597 :594:2010/04/18(日) 12:22:56
>>595
public voidを取ったらその部分はなくなりましたが、
mm.geta();
mm.getb();
がおかしいそうです。どうしたらいいでしょうか。

598 :デフォルトの名無しさん:2010/04/18(日) 12:45:59
ss.mm.geta.......

599 :594:2010/04/18(日) 13:09:59
できない(;_;)

600 :デフォルトの名無しさん:2010/04/18(日) 13:26:17
>>599
class S{
M mm;//<---
S(int a,int b){
mm=new M();
mm.a=a;
mm.b=b;
}
でできるけど、カプセル化を勉強しよう

601 :デフォルトの名無しさん:2010/04/18(日) 13:26:43
class S のコンストラクタ内で持っている M mm をインスタンス変数に。

602 :594:2010/04/18(日) 13:29:44
>>600
ありがとうございます。

603 :594:2010/04/18(日) 13:40:12
>>601
ありがとうございます。
インスタンス変数について勉強してみます。
大学でjavaの単位を落としています。

604 :デフォルトの名無しさん:2010/04/18(日) 13:46:54
クラスSはこのようにして、それに合わせてクラスSとMを修正してね
class S {
private M mm;//インスタンス変数は隠蔽
S(int a, int b) {
mm = new M(a, b);
}
public int geta() {
return mm.geta();
}
public int getb() {
return mm.getb();
}
}

605 :594:2010/04/18(日) 13:57:24
>>604
参考になります。

606 :デフォルトの名無しさん:2010/04/18(日) 15:41:59
floatを四捨五入して小数点第二位までのStringにするにはどうすればいいでしょうか。

1f → "1.00"
1.5f → "1.50"
1.55f → "1.55"
1.555f → "1.56"

という感じです。

607 :デフォルトの名無しさん:2010/04/18(日) 15:49:27
>>606
System.out.println(String.format("%1.2f",aa) );

608 :デフォルトの名無しさん:2010/04/18(日) 16:29:00
この間復刊した「Java並行処理プログラミング」を読んでるんですが、
問題あるコードの例として、下記の断片が挙げられてます。
単なるpublic公開は当然問題があるのはわかるのですが、
下記のAsserionErrorが投げられるような不正な状況が発生するという事でした。

断片↓
public Holder holder;

public void initialize() {
  holder = new Holder(42);
}

Holderの定義↓
public class Holder {
  private int n;
  public Holder(int n) { this.n = n; }
  public void assertSaniity() {
    if (n != n)
      throw AssertionError("(rya");
  }
}

直感ではまったく理解できないのですが、これがダメという事は、
Holderのコンストラクタの処理完了前に、
メモリだけ確保された状態の参照がholderに代入されるって事ですよね?
こんな順番めちゃくちゃがJavaの仕様なんだったら世の中のコードのほとんどがダメダメなんじゃないでしょうか。

609 :デフォルトの名無しさん:2010/04/18(日) 16:51:28
assertSaniity() とやらが暗黙に呼び出されるような仕掛けが、いつの間にか
追加されていたとは、俺は古いのか。

610 :デフォルトの名無しさん:2010/04/18(日) 17:43:35
関係あるかどうか、問題化するとしたらアウトオブオーダー書き込みかなぁ?
http://www.ibm.com/developerworks/jp/java/library/j-dcl/

シングルトンとか別スレッドからの参照のコードじゃなくて、作成されるオブジェクト側
のコードが例示されるなんて無いだろうから、やっぱ関係ないよな。

と書きつつ、実はコレの説明なのに608は見るべき箇所を間違っていると疑っている。

611 :608:2010/04/18(日) 17:54:12
>>610
そう、アウトオブオーダー書き込みの話です。
間違ってないつもりです。引用は、初版のP.59のList3-14,3-15です。
原書のerrataをみても訂正はありません。
この本曰く、このコードは、
「他のスレッドからは正しくないステートのHolderが見える事があり得ます。
 この正しくない公開によって他のスレッドは、"一部だけ構築されたオブジェクト"を見る事になります」
と説明されています。

612 :デフォルトの名無しさん:2010/04/18(日) 17:57:43
>アウトオブオーダー書き込みかなぁ?
おれも最初そう思ったがコードを>>608が勝手に断片化して肝心の部分が書かれてないだけじゃないの?

613 :608:2010/04/18(日) 17:58:05
ここでアウトオブオーダー書き込みと言っているのは、
holderへの新オブジェクトへの参照を書き込むのが、
コンストラクタの処理完了より先に書き込まれる、という事です。
本書ではこのコードについて、上記の説明の前に
「この見た目には無害なプログラムがエラーになる様子を実際に見えて、びっくりする人もいるでしょう」
と言っています。

614 :608:2010/04/18(日) 18:04:42
勝手に断片化はしてないです。
List3-14(断片)と3-15(Holderの定義)を、そのまま書いてます。
なにも省略してません。
>>613>>613の引用は、3-14の説明箇所の文です。
3-15(Holderの定義)は、「List 3-15 正しく公開されないとエラーになりそうなクラス(not so good)」という説明で書かれています。

615 :608:2010/04/18(日) 18:35:50
撮影下手ですみませんが、一応うpします。読みづらくてすみません。

>>608のコードが載っているページ
ttp://www.dotup.org/uploda/www.dotup.org820906.jpg.html

その次のページ(脚注が問題の内容)
ttp://www.dotup.org/uploda/www.dotup.org820913.jpg.html

脚注アップ
ttp://www.dotup.org/uploda/www.dotup.org820925.jpg.html

616 :デフォルトの名無しさん:2010/04/18(日) 18:43:40
610のページにもあるように、Stringにさえアウトオブオーダー書き込みの問題は起こる
わけで、そんなモノなんだから作られるインスタンスの中身になんか実は一切関係ない。

そのコードは、それが起こった時に目に見える例外を起こさせるためのテストオブジェクト。
大事な部分は、それを実際にインスタンス化させているコード例。それがきっとある筈。


・・・だと思うフツー。俺その本もってねーけど、その説明こそキモなんだから。

617 :608:2010/04/18(日) 18:50:57
>>616
> 大事な部分は、それを実際にインスタンス化させているコード例。それがきっとある筈。
それがまさに、>>608の「断片(本書のList3-14)」という事だと思うんですが、そうじゃなくて?


618 :デフォルトの名無しさん:2010/04/18(日) 19:27:24
>>608みたいなコードは普通に書いてるぞ?
これがダメだったら、どうすりゃいいんだよ?
変数をprivateにして、それを参照するメソッドを全部synchronizedにするのか?コンストラクタ以後値を変えないのに?
まじかよ、そんな事するのか本当に?

619 :デフォルトの名無しさん:2010/04/18(日) 20:40:08
実際は「起こる可能性がある」というレベル。
public class Test extends Thread {
public Holder holder;
public void initialize() {
holder = new Holder(42);
}
public static void main(String[] args) {
Test thread = new Test();
thread.initialize();
thread.start();
while (true) {
thread.initialize();
}
}
public void run() {
while (true) {
holder.assertSaniity();
}
}
}
で数分ブン回しても起きないし。

620 :デフォルトの名無しさん:2010/04/18(日) 20:43:23
ちなみに、Run() 中でキャッシュされる可能性とか考えて
System.out.println(holder.hashCode());
を入れて回したが、ちゃんとインスタンスは切り替わってる。

621 :デフォルトの名無しさん:2010/04/18(日) 22:17:27
そりゃまあマルチスレッドの問題は、
大抵「起こる可能性がある」でしかないわな。
環境と状況依存。
Intel CPU上のSunVMでどんなに頑張って再現できなくても、
Power上のIBMVMやItanium上のHPVMではぽろぽろと発生したり。

622 :デフォルトの名無しさん:2010/04/19(月) 00:37:06
内部クラスの内部クラスの内部クラス

623 :デフォルトの名無しさん:2010/04/19(月) 01:29:18
>>308
メモリモデルを理解すれば問題が理解できる。
正しく同期しなければ別スレッドには最新の値は見えないことがある。
cpuのレジスタに乗ったままの情報はメインメモリに書き出されるまで別スレッドから参照されない。
マルチスレッドは奥が深いです。いい本なので頑張って。

624 :デフォルトの名無しさん:2010/04/19(月) 01:54:05
>>618
通常は作ったオブジェクトを他のスレッドに渡すときに
その参照に対する可視性を保証するために同期するのが普通なので
その同期の副作用にてオブジェクトの中身に対する可視性も保証される。
参照の同期すらケチった場合に微妙な問題が起こりうる。

625 :デフォルトの名無しさん:2010/04/19(月) 02:11:51
class TestClass {
private static final OBJECT=new Object();
TestClass() {}
void hoge() {
synchronized (OBJECT) {
System.out.println("アフォ");
}
}
}

626 :デフォルトの名無しさん:2010/04/19(月) 02:23:21
適時 synchronized で囲んどきゃレジスタに乗ってるのもフラッシュされるだろ。
前世紀から RS/6000 でガンガン開発&動かしてるけどアウトオブオーダーと思しき挙動には
会ったことがないな。まぁコードレビューするときにちゃんと考慮できてるかで相手の技量を
読む程度だな。

627 :デフォルトの名無しさん:2010/04/19(月) 02:31:56
>>625
エラーがでますた

628 :デフォルトの名無しさん:2010/04/19(月) 02:44:57
>>624,>>626
適時ったって、これじゃあ、フィールドを参照する(=ほとんどすべて)のメソッドを
みんなsynchronizedにしないとあかん事になるんじゃないか?

ふつう、synchronizedなんて一時的に明らかな不整合状態になる時しかしなくね?


629 :デフォルトの名無しさん:2010/04/19(月) 09:57:13
>>628
別スレッドから変更できる変数で判断している部分は、その時なんじゃね?

630 :デフォルトの名無しさん:2010/04/19(月) 11:08:12
リフレクションを追っていくとnativeコードが登場します。
リフレクション多用はやっぱりパフォーマンス悪化につながりますかね…

631 :デフォルトの名無しさん:2010/04/19(月) 13:14:16
>>618
マルチスレッドでアクセスする場合は、普通のJavaプログラマなら
無意識にやってると思うよ。
アクセサをsynchronizedにするとか。
>>608みたいにholderフィールドを公開するなんて、普通はしてないでしょ?
若しくは
http://www.ibm.com/developerworks/jp/java/library/j-jtp06197.html
のリスト3みたいにvolatileつけるか。

ちなみに、Java並行処理プログラミングには、>>615のページの後ろに、
正しく構築されたオブジェクトを安全に公開するための条件が書かれています。
曰く、
staticイニシャライザで初期化
volatileまたはAtomicReference
finalフィールド
ロックでガード

632 :デフォルトの名無しさん:2010/04/19(月) 17:52:35
32bitWindows+tomcatで動作しているモジュールは
linux64bitOSの64bit用JRE環境上で正しく動作するでしょうか?

Windowsに特化したコード(パスも含め)は一切ありません。

633 :デフォルトの名無しさん:2010/04/19(月) 17:54:34
試してみるという方法はないのでしょうか?


634 :デフォルトの名無しさん:2010/04/19(月) 18:09:21
>>633
すみません。完全に間違った表記でした。

人通り動作することは確認しました。
ただ根本的に、OS、JREのビットの問題はSun(Oracle?)が保証する範囲であり、javaPGが気にする範囲ではないかということと、
客に伝えるために、その辺を明記しているページがあれば教えてもらえないでしょうか。

最初の質問と全く違っていましてすみません。

635 :デフォルトの名無しさん:2010/04/19(月) 19:22:42
Write Once Run Anywhere って唱えておけば言いんじゃね。
つか実行環境が 8bit だろうが 64bit だろうがバイトコードは変わりません。

636 :デフォルトの名無しさん:2010/04/19(月) 19:54:33
CSVファイルの読込み方法について教えて下さい

CSVの構成は3列固定で必ず値が入っています
行数は何行入っているかわかりません
値の取得は行単位で取得しています
リスト変数を使わずに2次元配列で各値を区切り文字で分解後、格納しています
予想していた行よりもCSVの行が多いと配列から溢れてエラーとなります

そこで、ファイルを開いた後にCSVファイルが何行であるかを調べる方法がありますでしょうか?
因みにリストは使えません。配列のみで操作したいです。
よろしくお願いします

637 :デフォルトの名無しさん:2010/04/19(月) 20:00:03
リストに入れて最後に配列化すりゃ良いだろ。

638 :デフォルトの名無しさん:2010/04/19(月) 20:12:08
>>636
最後まで読まなきゃ何行あるかなんて分かるわけがない。

> 予想していた行よりもCSVの行が多いと配列から溢れてエラーとなります
なら、読み込みながら行数を数えて、用意していた配列から溢れそうなら、
もっと大きい配列を作ってそっちに今までの配列から内容をコピーして、
今まで使っていた配列を指していた変数に大きい方の配列への参照を代入して読み込み処理を続ける。

639 :デフォルトの名無しさん:2010/04/19(月) 20:19:11
要はArrayListの再発明だな
ご苦労さんだw

640 :デフォルトの名無しさん:2010/04/19(月) 21:18:48
つぎはCVSの方言聞いて来るな

641 :デフォルトの名無しさん:2010/04/19(月) 21:23:27
だいたい、ストリームを開いた時点では最後の行は存在しているとは限らないしな。
Socket#getInputStream() とか。

642 :デフォルトの名無しさん:2010/04/19(月) 21:34:39
Stringが複数あって、長さがまちまちなんですが
位置を揃えて綺麗に出力するにはどうすればいいでしょうか?
\tも使ってみたのですが、長さが違うので同じタブ数でもズレて表示されてしまってました

文字数をカウントしてそれで分岐させれば表示はできるとは思うのですが
できるだけシンプルに作りたいのです・・・

643 :デフォルトの名無しさん:2010/04/19(月) 21:54:59
>>642
似たようなのは既に作ったなぁ
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/956.java
罫線を出力させなければ望む結果が出るはず


644 :デフォルトの名無しさん:2010/04/19(月) 22:14:32
StringのreplaceAll(String regex, String replacement)メソッド
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html#replaceAll(java.lang.String, java.lang.String)
を利用しようとしています。

引数replacementにバックスラッシュが入っていると、
私の想定と異なる結果になってしまうのですが、
正しくはどのように記述すべきでしょうか。

String str ="置換";
str.replaceAll("換","か\\ん");
→"置か\\ん"となることを想定しているが、"置かん"となってしまう

645 :デフォルトの名無しさん:2010/04/19(月) 22:19:36
Excelsior JETで作ったソフトは100メガとか
バカでかくなるんだけど、小さくする方法知りませんか?
試用版なんでメーカーには聞けません。

646 :デフォルトの名無しさん:2010/04/19(月) 22:23:10
>>645
購入検討中です、って言えば答えてくれるんじゃないの。

647 :デフォルトの名無しさん:2010/04/19(月) 22:24:32
>>644
System.out.println("置換".replaceAll("換","か\\\\\\\\ん"));

648 :デフォルトの名無しさん:2010/04/19(月) 22:27:30
>644

"か\\\\\\\\ん"

649 :644:2010/04/19(月) 22:44:28
自己解決しました。
Matcher.quoteReplacement
でエスケープすれば良い、ということでした。

regexの方は正規表現なので気をつけないといけないけど
replacementは普通の文字列として考えれば良い、
と思い込んでいました。

650 :デフォルトの名無しさん:2010/04/19(月) 23:03:55
>>638
thx
レコード数をカウンタで回して再配列化するって方法には気がつきませんでした。
ありがとうございました!


651 :デフォルトの名無しさん:2010/04/19(月) 23:14:27
結局VectorとかArrayListと同じことやってるじゃない。

652 :デフォルトの名無しさん:2010/04/19(月) 23:27:35
基礎を勉強するためには多少の再発明は必要なんでは。


653 :デフォルトの名無しさん:2010/04/19(月) 23:34:05
>>643
ざっと読んだだけだけど、たぶん文字をバイト配列に変換して、
その長さによって全角文字と半角文字を判別してるよね(違ってたらすまん)。
バイト数を根拠に文字幅を決めてしまってよいものかな?
他に良い方法があるかって言われると思いつかないんだけど。
(強いて言うならFontMetricsを使うことかな。めんどくさそうだけど)

>>642 の言う「出力する」っていうのが
(1)ファイルに書き込む
(2)印刷する
(3)ウィンドウに表示する
このいずれかで良いのであれば、HTMLにしてしまうのが簡単。
標準出力に表示したいのであれば、やっぱり >>643 みたいになるかな。


654 :デフォルトの名無しさん:2010/04/20(火) 00:15:57
>>653
org.apache.commons.lang.StringUtilsのleftPadとかrightPadじゃだめな感じ?

655 :デフォルトの名無しさん:2010/04/20(火) 00:18:16
>>651
ははは…おっしゃる通りで…
>>652さんの通り、学習中の身なので遠回りしてみたかったってのもあったんです
(あと、二次元配列を使ってみたかった)
実装して納得出来たら素直にArrayListを使います。

頭悪い質問に真面目に回答して下さってありがとうございました。


656 :643:2010/04/20(火) 00:24:33
>>653
固定幅フォントじゃないとだめだけど・・・ バイト数=長さでいいはず\t\r\nはシラネ
htmlっていう発想はなかったわw
rightPadでもよさそうだね 事前に文字数数える必要はありそうだけど
だれかcommons翻訳してくれる人いないのかなぁ
機械翻訳でやってみようかなぁ

用途はしらないけど、もしかしたらそのまま\tで出力してエクセルに張り付けてもいいのかもね


657 :デフォルトの名無しさん:2010/04/20(火) 03:11:30
クラス A とクラス Bが相互に参照している時って
Java コンパイラはどうやって整合性確認してんの?

658 :デフォルトの名無しさん:2010/04/20(火) 03:35:28
class ClassA {
ClassB classb;
ClassA(){
new ClassB(this);
}

659 :デフォルトの名無しさん:2010/04/20(火) 03:37:02
class ClassA {
ClassB classb;
ClassA(){
classb=new ClassB(this);
}
}
class ClassB {
ClassA classa;
ClassB(ClassA a) {
classa=a;
}
}

660 :デフォルトの名無しさん:2010/04/20(火) 03:38:31
class ClassA {
ClassA() {
ClassB b=new ClassB();
}
}
class ClassB {
ClassB() {
ClassA a=new ClassA();
}
}

661 :デフォルトの名無しさん:2010/04/20(火) 04:08:35
>>657
は?

662 :デフォルトの名無しさん:2010/04/20(火) 04:17:12
>>657
ひ?

663 :デフォルトの名無しさん:2010/04/20(火) 06:34:11
>>656
>(3)ウィンドウに表示する
その方法だとこれみたいにGUIに描画すると半角、全角混ぜると描画したときに揃わないぞ。

664 :デフォルトの名無しさん:2010/04/20(火) 07:12:08
>>657
キミにプログラミングは向いてないよ

665 :デフォルトの名無しさん:2010/04/20(火) 07:32:47
>>657
着眼点はいいんじゃない。C++なんかだとヘッダファイルの定義で判断してるもんね。
Javaだと一つのクラスの定義はclass{}の中におさまってるから、
ヘッダファイルに相当する部分はコンパイラが自動生成できるよ。
importだってCのincludeみたいにただ展開するだけじゃないしね。



666 :デフォルトの名無しさん:2010/04/20(火) 09:15:51
それでどうやって整合性確認、というか相互参照を解決しているの?
俺も知らないから興味ある

667 :デフォルトの名無しさん:2010/04/20(火) 09:21:40
>>664
そういう疑問を持ったことがないならキミはプログラマになった気になっているだけだろう。

668 :デフォルトの名無しさん:2010/04/20(火) 09:33:00
[JavaHouse-Brewers:5728] Re: Recompile efficiency (Re: sizeof class file(s))
http://java-house.jp/ml/archive/j-h-b/005728.html

669 :デフォルトの名無しさん:2010/04/20(火) 09:34:02
>>666
たとえば、
1パス目:全.javaファイルの型名だけ解析
2パス目:全.javaファイルのメソッドシグニチャを解析
3パス目:全.javaファイルのメソッドの中身を解析
みたいな感じでやっとくとか。

ワンパスで完全な.classファイルを出力し
一度解析した.javaファイルは二度と解析対象にせず、
みたいな無茶な前提がなければどうとでもなるような。

670 :デフォルトの名無しさん:2010/04/20(火) 09:40:59
クラスファイル自体が C のオブジェクトファイルみたいなもんだからな。
効率を無視して良いなら、とりあえず全対象ソースに対して参照しているクラスやシグネチャを
正しいものとしてバイトコード化し、最後にリンク代わりに呼び出し整合性を確認といった
方法がとれる。

671 :デフォルトの名無しさん:2010/04/20(火) 10:05:31
初めに必要なファイルを読み込んじゃうのか
クラス名とファイル名を一致させるのはこの為なのね

672 :デフォルトの名無しさん:2010/04/20(火) 10:07:00
>>663
これって2chとかのこと?
font指定すればいいんじゃねーの?まあGUIならtable使うが

673 :デフォルトの名無しさん:2010/04/20(火) 12:33:58
for文の中にローカル変数の定義書くとパフォーマンスが悪くなるので
for文の外で定義すべきでしょうか?

674 :デフォルトの名無しさん:2010/04/20(火) 14:20:45
>>657

class TestSuperClass {
TestSuperClass(){}
}
class TestSubClassA extends TestSuperClass {
TestSubClassA() {}
}
class TestSubClassB extends TestSuperClass{
TestSubClassB() {}
}

TestSubClassA a=new TestSubClassA();
TestSuperClass s=a;
TestSubClassB b=s;

コンパイルOK,実行時エラー

という情報をどこかで聞いた
整合性なんて無い

675 :デフォルトの名無しさん:2010/04/20(火) 14:23:26


676 :デフォルトの名無しさん:2010/04/20(火) 16:29:41
>>674
コンパイラ通らないだろ。

677 :デフォルトの名無しさん:2010/04/20(火) 17:31:57
コンパイラ持ってないんだろ

678 :デフォルトの名無しさん:2010/04/20(火) 17:38:58
コンパイラ持ってないことを知らないんだろ

679 :デフォルトの名無しさん:2010/04/20(火) 18:28:48
>>673
やってみてどれだけ差がでる?

680 :デフォルトの名無しさん:2010/04/20(火) 20:24:00
javaのコンパイラは高いからな。

681 :デフォルトの名無しさん:2010/04/20(火) 20:55:20
javaのコンパイラは厳しいからな

682 :デフォルトの名無しさん:2010/04/20(火) 22:50:51
みなさんはどうやってjavaをマスターしましたか?
授業でですか?
独学でですか?
仕事でですか?

683 :デフォルトの名無しさん:2010/04/20(火) 22:53:46
留学で

684 :デフォルトの名無しさん:2010/04/20(火) 22:57:22
javaの駅前留学

685 :デフォルトの名無しさん:2010/04/21(水) 02:05:22
>>680
え?

686 :デフォルトの名無しさん:2010/04/21(水) 03:56:48
ArrayList<型> 変数名の<型>の部分にクラスを指定し
その後、変数名.add(型.メソッド());のようにすることって可能なんですか?

メソッドの戻り値が型に合ってませんとか怒られるけど戻り値がクラスの名前あls;kふぁ;s

687 :デフォルトの名無しさん:2010/04/21(水) 06:04:23
学校と本でJavaの学習を終え、
自分なりにアプリケーションを作ってみようと
簡単ではありますが設計書を書きました。
そこで問題が・・・

当方のアプリケーションにプラグインを実装したいと考えているのですが、
どの本にも実装方法が記されていないばかりか、
「簡単でも良いから教えてください」と、
学校の先生に何度か聞いても
「時間がある時に教えてやる」と言われたまま数ヶ月も経ってしまいました。

普段は学校、アルバイトと、時間が無いので、
ゴールデンウィークから開発に着手したく少し焦っています。

Javaアプリにプラグインを実装するのに良い資料ありませんでしょうか?
もしくはご経験のある方がサンプルを示して頂ければ嬉しい限りです。

よろしくおねがいします。

688 :デフォルトの名無しさん:2010/04/21(水) 06:38:25
>>686
public class Hoge {

public static void main(String[] args) {

ArrayList<String> hogeList = new ArrayList<String>();
hogeList.add("Hoge");
hogeList.add(Hoge.newHageString());

for(String hoge: hogeList){
System.out.println(hoge);
}
}
static String newHageString(){
return new String("Hage");
}
}
これならできるが、こういうことか?

>>687
あんたの指すプラグインがわからない
あんたが作るアプリケーションに後からプラグインという形で拡張できるようにしたいということかな。
(jarファイルかなんかで。)


689 :デフォルトの名無しさん:2010/04/21(水) 09:19:10
>>687
自前のpluginを作りたいならI/F含めて設計して勝手に仕様付けすればいい
>「時間がある時に教えてやる」
は恐らく、その先生とやらが分からないものと考えたほうがいいだろう
生徒の前で分からないとは言えないからなw

690 :デフォルトの名無しさん:2010/04/21(水) 09:32:36
>>687
思い描いているプラグインのシステムに近いものを実装しているアプリケーションで
ソースが公開されているもののソースを眺めれ
eclipseのプラグインとかantの新規タスクの作成と受け入れの部分も一種のプラグインシステムだ

691 :デフォルトの名無しさん:2010/04/21(水) 10:48:59
>>687

「機能の一部を差し替え可能にしたい」のが動機なら、
リフレクションとかデザインパターンの「Strategy」あたりの勉強が必要ではないかと

プラグインの機能によっては「Abstract Factory」まで話が膨らむかもしれないけど

「専用ディレクトリに追加JARをおくとプラグイン一覧が自動更新」とかは
クラスローダの自作も必要になるかなぁ

692 :デフォルトの名無しさん:2010/04/21(水) 10:55:44
一番手っ取り早いのは、簡易に考えて特定のinterface実装させたクラスの呼び出しかな
イベントクラス等のイメージで組み込めばいいかと


693 :デフォルトの名無しさん:2010/04/21(水) 11:18:05
>>673
美しいコードとしては外。
理屈としてはループの回数だけスタックに参照(8byte?)を載せ下げするので、その分の付加がかかる。

694 :デフォルトの名無しさん:2010/04/21(水) 11:27:31
>>693
素人だな
美しいのは中だろ、低能

695 :デフォルトの名無しさん:2010/04/21(水) 11:39:55
素人vs美人

変数は使う直前(使う時)に宣言するのがマシンパフォーマンス的には良い
ループの度に変数宣言はクドイから俺なら変数宣言(変数初期化)はループの前(外)かなぁ

ループに入らないパターンがあるならループの前に分岐させて変数初期化してやればクール
ループにならないパターンは変数を読まないからメモリが空くし

ま、分岐で処理時間掛けるかメモリ食わせるかの優先しだい

696 :デフォルトの名無しさん:2010/04/21(水) 11:42:00
>>673くらいのだったらVMの中の人が最適化してくれるんじゃねえの

697 :デフォルトの名無しさん:2010/04/21(水) 11:58:59
>>689
お前もわかってないだろw

プラグイン用のインターフェースを決める。例えば
interface Plugin{
 void execute();
}

プラグインクラスは上記Interfaceをimplする。
プラグインの.classなり.jarなりをクラスパスが通っているところに配置する。
Plugin plugin = Class.forName("プラグインのクラス名").newInstance();
plugin.execute();

でいけるんじゃないか?俺もわかってないけどw
プラグインファイルを置いただけでプラグインの一覧とか表示するなら
Fileクラスつかってプラグインディレクトリを探索したり、定義を決めて
xmlで書かせるなりする必要あるし、自分アプリと連携するなら
アプリからプラグインに連携項目を公開する方法とか決めないと。

そんなものを学生レベルに一から教えるのはとてもめんどくさいから
>「時間がある時に教えてやる」
は嘘ごまかしではない気がする。その後忘れてると思うけど

698 :デフォルトの名無しさん:2010/04/21(水) 11:59:24

for (int i=0;i<10000;i++) { long k=0L; ... }

long k; for (int i=0;i<10000;i++) { k=0L; ... }

int i; long k; for (i=0;i<10000;i++) { k=0L; ... }

long k; for (int i=0;(i<10000)&&((k=0L)==0L);i++) { ... }

int i; long k; for (i=0;(i<10000)&&((k=0L)==0L);i++) { ... }


699 :デフォルトの名無しさん:2010/04/21(水) 12:00:58
EL式でメソッドが実行できるようになったって?
もうscriptletでよくね・・・?

700 :デフォルトの名無しさん:2010/04/21(水) 12:05:08
>>697
勘違い先生乙

701 :デフォルトの名無しさん:2010/04/21(水) 12:26:04
>>698
コンパイルエラー

702 :デフォルトの名無しさん:2010/04/21(水) 17:54:15
>>697
> Plugin plugin = Class.forName("プラグインのクラス名").newInstance();
これはどこに書くつもりだ。

703 :デフォルトの名無しさん:2010/04/21(水) 18:52:19
>>673
簡単なコードでjavac, javap -cしてみた結果、
バイトコード上ではどっちも同じになった。
(Oracle(Sun) JDK6)

バイトコード初めて読んだので間違っているかもしれないけど、
ttp://www.ne.jp/asahi/hishidama/home/tech/java/bytecode.html#h2_sample
の例を見ても想像できる通り、
変数の宣言の場所によってパフォーマンスに差が出るようには思えないけれど。

宣言時にはとくに何もしてなくて、
変数への代入時(istore_1とか)に初めて変数ができてる。
ので、>>695
> 変数は使う直前(使う時)に宣言するのがマシンパフォーマンス的には良い
はjavacがやってくれるんじゃないの、と。

>>693
必要のないところまでスコープ広げるのは美しくない。

704 :デフォルトの名無しさん:2010/04/21(水) 21:21:21
>>703
検証乙です
って事は使わない変数を大量に宣言するだけならマシンパフォーマンスには影響しないんだ?
もし本当なら、すげぇな


705 :デフォルトの名無しさん:2010/04/21(水) 22:03:16
>>704
宣言だけのところにブレイクポイント設定できないだろ?そういうことだとおもうぜ。

706 :デフォルトの名無しさん:2010/04/21(水) 22:04:03
オレ流プラグイン実装で
META-INF/services/
とか使ってる人はいるのだろうか

707 :デフォルトの名無しさん:2010/04/21(水) 22:23:00
文字列内に、改行コードでなく「\n\r」を入れたいのですが、なにか方法はないでしょうか。
strの内容が、
"aaaa
bbbb"(途中で改行)
ではなく
"aaaa\n\rbbbbb"
がはいった結果になるよう、

str="…………";を記述したいのです。

708 :デフォルトの名無しさん:2010/04/21(水) 22:25:43
\\n\\rとか?

709 :デフォルトの名無しさん:2010/04/21(水) 22:27:43
>>707
"\\n\\r"

710 :デフォルトの名無しさん:2010/04/21(水) 22:28:53
>>708
ありがとうございます! 目的の動作ができました。

711 :デフォルトの名無しさん:2010/04/21(水) 22:29:26
>>707
String str = "aaaa\r\nbbbb";
System.out.println(str.replaceAll("\\r\\n", "\\\\r\\\\n"));

712 :デフォルトの名無しさん:2010/04/21(水) 22:29:34
>>709さんもありがとうございます。

713 :711:2010/04/21(水) 22:31:21
rとn逆だったorz

714 :デフォルトの名無しさん:2010/04/21(水) 22:36:35
Eclipse3.2で
http://www.atmarkit.co.jp/fjava/special/struts2/struts2_1.html
のように、Struts2.1の設定をしたいんですが、
メニューのファイル→新規→プロジェクトと選んでも
Webという選択肢がありません。
この場合、どれを選べばいいんですか?
Tomcatプロジェクトですか?

715 :714:2010/04/21(水) 22:40:31
因みに、Webがない、という証拠のスナップショットです:
http://imagepot.net/view/127184317270.jpg


716 :デフォルトの名無しさん:2010/04/21(水) 22:42:58
>>714
手元に3.2が無いから正確な回答はできないけど、たぶんそれでOK
…というか、おとなしく最新版使えば?

717 :デフォルトの名無しさん:2010/04/21(水) 22:47:49
>>705
!そういうことですか…

718 :714:2010/04/21(水) 22:49:40
>>716
ありがとうございます。
話せば長くて壮大な話になるんですけど
http://pc12.2ch.net/test/read.cgi/tech/1265820185/257-265
にあるように、いろいろな問題が発生して最新版が使えませんでした。
今のところ、最も安定しているのがこの3.2のようです。
本当は最新版が使いたいんですけどね・・・

719 :デフォルトの名無しさん:2010/04/21(水) 23:16:27
3.2っつーかWTP入ってんのか?

720 :デフォルトの名無しさん:2010/04/21(水) 23:25:02
>>718
よくわかんないけど、Pleiadesつかえばいいんじゃね?

正直、アナタのeclipseにどんなプラグインがはいっているのかわからないから、
なんともいえないんだわ。

721 :デフォルトの名無しさん:2010/04/21(水) 23:33:56
マルチに答えてしまった俺がバカだった。。

722 :デフォルトの名無しさん:2010/04/21(水) 23:37:43
ユーティリティのプロトタイプを書いてみたので、便所に落書(1/4)
/**
* jar ファイルにあるパッケージとクラスを列挙します。
*/
public class JarAnalyzer {
// 内部クラスはとっぱらってしまった (-> \\$)
static Pattern pat = Pattern.compile("((?:[^/]*/)*)([^\\.\\$]*)(\\.[^\\.]*)");

Map<String,TreeSet<String>> pkgs = new TreeMap<String, TreeSet<String>>();

/** jarファイルを解析します。
* @param jarfile jar ファイル
* @throws IOException
*/
public JarAnalyzer(File jarfile) throws IOException {
if (!jarfile.exists()) {
throw new FileNotFoundException();
}


723 :デフォルトの名無しさん:2010/04/21(水) 23:37:59
便所に落書(2/4)
// 内部解析
JarFile jar = new JarFile(jarfile);
Enumeration<JarEntry> e = jar.entries();
while (e.hasMoreElements()) {
JarEntry ent = e.nextElement();
// パスからパッケージとクラスを判断
Matcher mat = pat.matcher(ent.getName());
if (mat.matches() && ".class".equals(mat.group(3))) {
// パッケージ名
String pkg = mat.group(1).replace("/", ".");
pkg = pkg.substring(0, pkg.length()-1);
if (! pkgs.containsKey(pkg)) {
pkgs.put(pkg, new TreeSet<String>());
}
// クラス名
String cls = mat.group(2);
if (! "".equals(cls)) {
pkgs.get(pkg).add(cls);
}
}
}
jar.close();


724 :デフォルトの名無しさん:2010/04/21(水) 23:38:14
便所に落書(3/4)
// 余分なエントリは除去
LinkedList<String> empties = new LinkedList<String>();
for (String name : pkgs.keySet()) {
Set<String> ent = pkgs.get(name);
if (ent.size()==0) {
empties.add(name);
}
}
for (String name : empties) {
pkgs.remove(name);
}
}


725 :デフォルトの名無しさん:2010/04/21(水) 23:38:27
便所に落書(4/4)
/** パッケージ名の一覧を返します。
* @return パッケージ名の一覧
*/
public Set<String> getPackageNames() {
return Collections.unmodifiableSet(pkgs.keySet());
}
/** クラス名の一覧を返します。
* @param packagename パッケージ名
* @return クラス名の一覧
*/
public Set<String> getClassNames(String packagename) {
if (! pkgs.containsKey(packagename)) {
return Collections.unmodifiableSet(new TreeSet<String>());
}
return Collections.unmodifiableSet(pkgs.get(packagename));
}
}


726 :デフォルトの名無しさん:2010/04/21(水) 23:39:05
おまけ

public class Test {
public static void main(String[] args) throws IOException {
File f = new File("C:\\install\\commons-io-1.4-bin\\commons-io-1.4\\commons-io-1.4.jar");
JarAnalyzer ja = new JarAnalyzer(f);
for (String p : ja.getPackageNames()) {
System.out.println("[" + p + "]");
for (String c : ja.getClassNames(p)) {
System.out.print("\t");
System.out.println(c);
}
}
}
}


727 :デフォルトの名無しさん:2010/04/22(木) 00:22:45
http://ideone.com/2UYEs
便所の落書きにしては長いのでup
System.out.println時に標準出力&ファイルへ同時出力
printlnしたソースの行等を左側に出力


commons 特にlang CLI Collections Mathみたいな汎用ライブラリ?あれば教えてください
後知ってるのは Uncommons Math、google collectぐらい・・・

728 :デフォルトの名無しさん:2010/04/22(木) 00:26:38
>>687
プラグインで拡張できるJavaプログラムを作る
http://codezine.jp/article/detail/1271

729 :デフォルトの名無しさん:2010/04/22(木) 01:53:10
>>727
そういう細かいのってあるとしたらcommonsだろうなあ、と思いましたけどなさそうですね。
というか普通はlogging-apiとかlog4jみたいなのを使うと思うんですが。

730 :デフォルトの名無しさん:2010/04/22(木) 02:10:39
>>729
まああくまでログというより実験コード用に便利かなと
標準出力=sysoutっていうのが頭の中にはいっちゃってるし、println(i) println(j)みたいなのをいちいちprintln("i="+i)って書かなくて済むような

731 :デフォルトの名無しさん:2010/04/22(木) 06:33:25
http://rss.rssad.jp/rss/carviewbiz/content
ここのRSSのPR記事のエントリーがROMEで取得できないんだが何故?

732 :デフォルトの名無しさん:2010/04/22(木) 07:39:30
みんカラの方のフィードは読めたから、多分記述が間違ってるんだな

733 :デフォルトの名無しさん:2010/04/22(木) 09:21:46
import java.(ry
で、いつも思うんですが
何で下記の様に指定する事が出来ないんでしょうか?
import java.*
とか
import java.*.*

java.以降は必ず1つは指定しなければならないって仕様なんですかね?


734 :デフォルトの名無しさん:2010/04/22(木) 09:41:52
>>733
それ名前が衝突しまくるので逆に不便じゃね

735 :デフォルトの名無しさん:2010/04/22(木) 10:16:35
>>733
Java の API マニュアルのクラス一覧とか上から見ると、
Annotation で早くも二つ連続して並んでないか?

736 :デフォルトの名無しさん:2010/04/22(木) 10:32:35
>>727
Packageクラス使えば文字列に正規表現かける必要なかった気がする。


737 :デフォルトの名無しさん:2010/04/22(木) 11:58:37
>>733
パッケージはディレクトリじゃないよ
ツリー状になってない

例えば
java.langパッケージと
java.lang.annotationパッケージは
親子関係になってない


738 :733:2010/04/22(木) 12:37:06
>>737
なるほど
ディレクトリ構造っぽい表記が出来るのにバッティングしてしまうんですね
一々importを書くのが面倒だけど、仕方ないのかぁ

少し前のレスに変数の宣言はメモリパフォーマンスに影響しないってのがあったけど
このimportも「*」で指定するより直で指定した方がパフォーマンスいいんですかね?


739 :デフォルトの名無しさん:2010/04/22(木) 13:09:56
>>738
今はIDEが補完するからimportを面倒なんて思っている人はかなり少ないと思う。
Eclipse使ってるならCtrl+Sfhit+Oを押すだけだよ。

あとコンパイル時に参照するだけだからパフォーマンスには影響しないよ

740 :デフォルトの名無しさん:2010/04/22(木) 17:46:00
>>739
>Eclipse使ってるならCtrl+Sfhit+Oを押すだけだよ

こんな便利機能があったとは…
マジでありがとうございました

741 :デフォルトの名無しさん:2010/04/22(木) 21:40:36
>>687です。

>>728さん
プラグインの実装、ずばり!理解できました。
開発には時間が掛かるかも知れませんが、
納得行くものが出来たら公開する予定です!

本当にありがとうございました。

742 :デフォルトの名無しさん:2010/04/22(木) 21:58:06
>>740
ちなみにimport staticは、
該当の部分を選択して、Ctrl+Sfhit+Mな。

743 :デフォルトの名無しさん:2010/04/22(木) 22:40:19
ubuntu8.04でgcj4.2を使い始めました。
これで簡単なコンソールアプリをリンク(コンパイル)すると普通に
成功してリンクしたマシンでは実行できるのですが、
このアプリを他のJDKもgcjもインストールしていないマシンで実行
しようとすると、libgcj.so.80が見つかりませんというエラーが出て
動きません。libgcj.so.80を含めてリンクするにはどうしたらいいんでしょうか?

744 :714:2010/04/22(木) 22:45:54
>>719-720
>WTP
>Pleiades

なるほど、その辺です、きっと!
後は自分で調べます!

ありがとうございました!
これから半年ROMります!

745 :デフォルトの名無しさん:2010/04/22(木) 23:28:47
>>744
なんかJRE、Eclipseの入手〜Struts2の設定〜HelloWorldを作るところまで書いてるの見つけたよ。
http://www.mlexp.com/wiki/?Eclipse%20%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB

まぁここJavaの質問スレだから、あとは自分でやってくれ。

746 :デフォルトの名無しさん:2010/04/22(木) 23:43:48
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("a", aClass);
map.put("b", bClass);
map.put("c", cClass);

こんな感じで設定されているんですがこれからキーと値の対応を維持しつつ
キーと値(入れたときのクラス(Objectクラスじゃない))を別に取り出したいんですがうまい方法ありませんか?
ちなみに値のクラスはいろいろ入ってくるという想定です

747 :デフォルトの名無しさん:2010/04/22(木) 23:56:15
>>746
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Class.html
getSimpleName()
でなんとかならないかな?

748 :デフォルトの名無しさん:2010/04/23(金) 00:11:27
すげぇな。何言ってんのか俺には理解できない。

749 :デフォルトの名無しさん:2010/04/23(金) 00:15:07
>>746
for(Object obj: map.values){
   @SuppressWarning("unchecked")
   Class<?> clazz = (Class<?>)obj;
   ...
}

750 :746:2010/04/23(金) 00:56:04
すいません、ちょっと上のほう省略しすぎて勘違いさせてしまったような気がします

AClass aClass = new AClass();
BClass bClass = new BClass();
CClass cClass = new CClass();
・・・
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("a", aClass);
map.put("b", bClass);
map.put("c", cClass);


aClass,bClass,cClassはそれぞれ別クラスのインスタンスです。
なので
>Class<?> clazz = (Class<?>)obj;

ここでうまく元のクラスに合うようにしたいのです
こういうかき方はできないんですがやりたいこととしては

aClass.getClass() clazza = (aClass.getClass())obj
bClass.getClass() clazzb = (bClass.getClass())obj

こんな感じで動的にクラスを変更して取り出したい

751 :デフォルトの名無しさん:2010/04/23(金) 01:14:03
Class.forName

752 :デフォルトの名無しさん:2010/04/23(金) 01:16:12
Class clazz = Class.forName(className);
MyClass myInstance = (MyClass)clazz.newInstance();

753 :デフォルトの名無しさん:2010/04/23(金) 01:37:13
instanceOf

754 :デフォルトの名無しさん:2010/04/23(金) 02:43:58
>>750

aClass.getClass() clazza = (aClass.getClass())obj
bClass.getClass() clazzb = (bClass.getClass())obj

をやったあとに何がやりたいの?
clazzaとclazzbが無関係だとメソッドも呼べないし
意味ないんじゃない?
そうしなきゃならない必然性がわからん

755 :デフォルトの名無しさん:2010/04/23(金) 02:58:40
>Class<?> clazz = (Class<?>)obj;
これで良いんじゃないの

756 :デフォルトの名無しさん:2010/04/23(金) 03:18:55
質問者は初心者系で
こういうプログラムは必ずこういう風にしなければならないと勘違いしているタイプとか?

757 :デフォルトの名無しさん:2010/04/23(金) 03:29:31
MapやらListにまったく違う型のオブジェクトを入れたいと思ったことがないな
せめてインタフェースを作る気がする

758 :デフォルトの名無しさん:2010/04/23(金) 03:50:15
DI

759 :デフォルトの名無しさん:2010/04/23(金) 04:01:04
>>757
SwingQueueがイベントをクラスで持ってなかったっけ?
どっちにしろインターフェイス実装されてるんだが。

760 :744:2010/04/23(金) 13:25:24
>>745
重ね重ねありがとうございました
キーはやっぱりWTPでした
ではまた半年後に

761 :デフォルトの名無しさん:2010/04/23(金) 14:52:42
StringクラスのcharAtメゾットを用いて、キーボードから入力した文字列の3文字目を表示する。

Stringクラスのreplacメゾットを用いて、キーボードから入力した文字列のaをすべてbに置き換える。
この2つのプログラムを知りたいんだが・・・

762 :デフォルトの名無しさん:2010/04/23(金) 15:14:10
そうですか

763 :デフォルトの名無しさん:2010/04/23(金) 18:21:54
ドイツの人はメゾットって発音するらしいね

764 :デフォルトの名無しさん:2010/04/23(金) 18:24:54
そうですか

765 :デフォルトの名無しさん:2010/04/23(金) 18:28:27
EclipseでJSF2の勉強したいんですが、日本語で有用なサイトありますか?
JSF1+Faceletsなサイトはいくつか見かけたのですが、JSFの予備知識無しに
1からJSF2のやろうとするとどこから手をつけたらいいのか和からなくて。

jsf-2.0.jarとかをおいてWebContents配下にhtmlファイルを置いたら、
ブラウザでそのhtmlにアクセスするとテンプレートとして機能するのでしょうか?
サンプルサイトみてもブラウザのURL欄になに入れたらいいか書いてないし

766 :デフォルトの名無しさん:2010/04/23(金) 19:16:01
物理演算用のプログラムを作るためにjavaを勉強しようと思ったので、少し質問させてください。

プログラム自体は一応やったことがありますが、オブジェクト指向というのはよくわかりません。
また物理演算の結果表示のために、グラフィカルな表示が必要になります。
そのため、オブジェクト指向とグラフィックスの2つを勉強できるサイトや本があれば教えてください。
それぞれ別サイトで構いませんのでよろしくお願いします。

767 :デフォルトの名無しさん:2010/04/23(金) 20:55:27
>>766
ちょっと待っててください
支配下の回答者を呼んできて答えさせますから
次レスで答えるはずです

768 :デフォルトの名無しさん:2010/04/23(金) 21:12:47
class Base {
    void hoge() {
        System.out.println("Base");
    }
}

class Derived extends Base {
    void hoge() {
        System.out.println("Derived");
    }
}

class Derived2 extends Derived {
    void hoge() {
        super.hoge(); // Derived::hoge();
        System.out.println("Derived2");
    }
}

このプログラムで,Derived2 の hoge から super.hoge() とすることで Derived の hoge()
を呼び出すことができたのですが,Base の hoge を呼び出すにはどうすればよいでしょうか?
試しに super.super.hoge() としてみましたがダメでした.

769 :デフォルトの名無しさん:2010/04/23(金) 21:15:57
出来ないと思ったが

770 :デフォルトの名無しさん:2010/04/23(金) 21:25:17
ホゲ!ホゲ!

771 :デフォルトの名無しさん:2010/04/23(金) 22:06:09
出来ます

772 :デフォルトの名無しさん:2010/04/23(金) 22:16:46
自社で作成したパッケージの名前は、勝手に決定して社外に公開していいのでしょうか?
それともパッケージ名を管理する団体に登録申請などをする必要があるのでしょうか?

773 :デフォルトの名無しさん:2010/04/23(金) 22:18:27
>>771
え?そうなの?
漏れもできないと思ってたけどどうやるの?

774 :デフォルトの名無しさん:2010/04/23(金) 22:37:11
766も回答お願いします。。。
支配下の回答者さんはまだでしょうか?

775 :デフォルトの名無しさん:2010/04/23(金) 22:58:39
>>768
http://wisdom.sakura.ne.jp/programming/java/java24.html
できない

776 :デフォルトの名無しさん:2010/04/23(金) 23:29:49
>>772
インターネットのドメイン名をパッケージ名にするんだっけ?
http://commons.apache.org/ → org.apache.commons
今でもそのルールって一般的?


777 :デフォルトの名無しさん:2010/04/23(金) 23:41:58
org(anization)から始めるのはいいけど
jpから始めるのは変
日本政府製である場合以外はね

778 :◆eF0q2czoxk :2010/04/23(金) 23:42:45
Base.class.getDeclaredMethod("hoge").invoke(this);
で出来ないかなーと思ったが、
「基本となるメソッドがインスタンスメソッドの場合、動的メソッドルックアップを使用して呼び出しが行われ、ターゲットオブジェクトの実行時の型に基づいてオーバーライドが実行されます (『Java 言語仕様、第 2 版』のセクション 15.12.4.4 を参照)。」
でオーバーライドされてもうた。

779 :デフォルトの名無しさん:2010/04/23(金) 23:42:51
>>777
なんで?

780 :デフォルトの名無しさん:2010/04/23(金) 23:43:07
orz

781 :デフォルトの名無しさん:2010/04/23(金) 23:51:28
>>777
だな
jpパッケージのクラスを日本中で共同使用するわけじゃないんだし
jp.co.can○nとかjp.co.s○nyとか恥ずかしいぞ

782 :デフォルトの名無しさん:2010/04/23(金) 23:58:17
orzから始めてるぜ

783 :デフォルトの名無しさん:2010/04/24(土) 00:09:09
趣味でやってる素人の一般人もパッケージ名って気にしたほうがいいの?

784 :デフォルトの名無しさん:2010/04/24(土) 00:20:51
個人もドメイン名を使うことが推奨されてる

785 :デフォルトの名無しさん:2010/04/24(土) 00:25:22
>>781
共同使用ってなんだ?
パッケージはツリー構造じゃないからjpを日本中で共有することにはならんよ。

一部上場のjpTLD企業にいくつか入ったことがありますが、
jp始まりの内作ソフトウェアは結構作られていますよ。


786 :デフォルトの名無しさん:2010/04/24(土) 00:27:36
yui.rei.ritsu.tsumugi

787 :デフォルトの名無しさん:2010/04/24(土) 00:28:10
>>785
>jp始まりの内作ソフトウェアは結構作られていますよ。
知ってるよ
アホなとこばっかりだwww

788 :デフォルトの名無しさん:2010/04/24(土) 00:36:04
Hな名前のパッケージ作って発表しても良いですか?

789 :デフォルトの名無しさん:2010/04/24(土) 00:41:11
ok

790 :デフォルトの名無しさん:2010/04/24(土) 01:00:56
package名が被らないようにするためにFQDNを逆に並べたものが推奨されている。
jpで始まるのがかっこ悪いとか言ってるのはただの無知。
自分トコのドメインがexample.jpならjp.example.project...とするべき

791 :デフォルトの名無しさん:2010/04/24(土) 01:17:46
ネタで言ってるんじゃねーの?
本気だとしたら唯の馬鹿だから無視しといたほうがいい

792 :デフォルトの名無しさん:2010/04/24(土) 01:34:08
>>786 を見た直後だから
>>791 を「ゆいのばか」と読んでしまった


793 :デフォルトの名無しさん:2010/04/24(土) 03:09:01
System.out.println("そんなYaZuYaで働きたい!!");

794 :デフォルトの名無しさん:2010/04/24(土) 06:56:47
jspを練習したいのですが、お勧めの統合開発環境ってありますか?
おそらくホームページビルダーは対応していないと思うし、
ECLIPSEとかが無難でしょうか?
(慣れた人だとテキストエディタで十分だと思いますが、
初心者なんでデバッグ機能が付いているほうがいいので)

795 :デフォルトの名無しさん:2010/04/24(土) 07:27:20
PHPもjavaもサーバー側で処理を行うのですが、
特に処理に関してなにが違うのでしょうか?


796 :デフォルトの名無しさん:2010/04/24(土) 08:00:21
E.classのとこでエラーする、解決方法無いでしょうか。
Objectにしてキャストするしか無いですか?
class Punko<E>
{
void punkoMethod ( Object owner , String func , E Param )
{
try
{
owner.getClass().getMethod( func , E.class ) ;
} catch ( Exception e ){}
}
}


797 :デフォルトの名無しさん:2010/04/24(土) 08:55:37
jspってスコープを4つほど覚えたら
それで事が済むんじゃないの? 1時間本を読ん
だらしまいだろ。 カスタムタグとか、いじくりまわしても
そんなの使う場なんてあるの??

798 :デフォルトの名無しさん:2010/04/24(土) 09:16:01
ネタで言ってるんじゃねーの?
本気で全板の2getだけ表示するソフト組むとか言ってるから
無視しといたほうがいい。

799 :デフォルトの名無しさん:2010/04/24(土) 10:32:14
>>794
シェアが大差付けられているという点に目をつぶるなら、ビジュアルでGUI開発
できるNetBeansを試してみるのも悪くないかと思う。
Sun提供の公式な開発環境でもあるし。

800 :デフォルトの名無しさん:2010/04/24(土) 10:38:45
>>798
相手にするな

801 :デフォルトの名無しさん:2010/04/24(土) 11:43:32
>>796
なにがしたいのかわからんが
param.getClass()にすれば?

802 :デフォルトの名無しさん:2010/04/24(土) 12:33:55
独習Java サーバサイド編で勉強しようとしてる者なんですが、
サーバサイドJavaと言った場合、JavaEEのことだと書いてあるのに、
環境設定する際にJavaSEを落とすよう言われEEは落とさないみたいなんですが
EEがなくてもJSPやサーブレットの勉強って出来るものなんでしょうか?

803 :デフォルトの名無しさん:2010/04/24(土) 13:43:07
Dark-side Java

804 :デフォルトの名無しさん:2010/04/24(土) 13:54:39
個人なら.nameか.infoでいいんじゃないの?

805 :デフォルトの名無しさん:2010/04/24(土) 14:05:21
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」

↑これは何が原因だ?

806 :デフォルトの名無しさん:2010/04/24(土) 14:07:28
新規にテキストファイルからjavaプログラムを作って上書き保存してもjavaプログラムに
変換しないのは何が原因だ?
お前ら教えろ!
脳みそが有ったらな。

807 :デフォルトの名無しさん:2010/04/24(土) 14:11:54
>>799
Netビーンを試したいのですが、Oracleのページからダウンロードできるものでもいいでしょうか?

808 :デフォルトの名無しさん:2010/04/24(土) 14:13:23
>>806
変換を命令してないからじゃないのか?

809 :デフォルトの名無しさん:2010/04/24(土) 15:58:13
>>807, 794
SunがOracleに買収されたのでそれ。
初心者ならネットに日本語情報がいっぱい転がってるEclipse、
日本語化&Web開発etcのプラグインが入ったPleiadesのAll-in-one Eclipseって
やつがおすすめ。NetBeansも今のは大分よさそうだけどね。
慣れた人ほどテキストエディタでやる人はいない(細かい修正を除いて)。
IDEの機能を使えばいろいろ楽ができるから。

>>795
Javaはコンパイル後Java VMという仮想マシン内で実行される。
PHPはインタープリターというやつが呼び出しの度に逐次コンパイルして
実行される。だからメモリにキャッシュしてとかDBコネクションプール利用とか
のJavaで当たり前の技術もPHPでは別途サーバーを立てないと無理、
とかいろいろ違う。

>>797
普通はjspスクリプトレットを書かない(jspファイルにはコードを一切書かない)ので
カスタムタグがないと死ねる。jspファイルからDBに接続するようなPHPみたいな
サンプルを鵜呑みにしないこと

>>802
J2SEでいい。servlet APIはJ2EEの一部だけどtomcatとかに入ってるからそれで。


810 :デフォルトの名無しさん:2010/04/24(土) 19:22:35
>>805
パスが通ってないんじゃないの

811 :デフォルトの名無しさん:2010/04/24(土) 20:23:40
>>781
なんで?

812 :デフォルトの名無しさん:2010/04/24(土) 20:27:36
>>807
ごめん、特に他意はなく純粋な質問なんだけど。
俺NetBeansがダウンロードできるのって
http://java.sun.com/javase/downloads/index.jsp
のJDKバンドル版か
http://netbeans.org/downloads/index.html?pagelang=ja
しか知らないんだけど、Oracleのサイトでもダウンロードできるページがあるの?
あるいは1つめのページのこと?

813 :デフォルトの名無しさん:2010/04/24(土) 22:21:42
>>809
All-in-one Eclipseはイマイチだぞ
EEじゃない

814 :813:2010/04/24(土) 22:30:04
よく分からないけど、EJBとかいうのが使えないしイマイチ

815 :デフォルトの名無しさん:2010/04/24(土) 23:12:56
windows 7 の64bitなんですが、
jdkは32bit用と64bit用どちらがいいのでしょうか?
(32bit用ならProgram Files(x86)、64bit用ならProgram Filesにインストールですよね?)
あと、Tomcatをインストーラからインストールしようとすると、
64bit用のフォルダにインストールになるみたいなんですが、
jdkとTomcatは同じに揃えなければならないのでしょうか?
(jdkは32bit、Tomcatは64bitとかはマズいでしょうか?)

816 :デフォルトの名無しさん:2010/04/24(土) 23:13:04
・・・
どおもおかしいぞ。


817 :デフォルトの名無しさん:2010/04/24(土) 23:26:18
>>813
ん?JSPの練習にEJB関係ないでしょ。

あとまさかとは思うけど、PleiadesのAll-in-oneをAll-In-One ProjectのEclipseと勘違いしていない?

818 :デフォルトの名無しさん:2010/04/24(土) 23:29:29
EJBは糞

819 :デフォルトの名無しさん:2010/04/24(土) 23:50:48
>>817
勘違いしてた、PleiadesのAll-in-oneのはEEなんだ
Pleiades重いけどな

820 :デフォルトの名無しさん:2010/04/25(日) 01:42:14
>>818
3に期待だな。

821 :デフォルトの名無しさん:2010/04/25(日) 01:44:41
もう使われるも局面あまりないだろう。

822 :デフォルトの名無しさん:2010/04/25(日) 01:56:25
使わなくてもEclipse自体は対応してた方が良いだろ

823 :デフォルトの名無しさん:2010/04/25(日) 02:48:39
>>818
君はプロ版の糞

824 :デフォルトの名無しさん:2010/04/25(日) 02:51:49
Tomcat起動後にstart serviceさせても
途中で消えてスタートしません。
start serviceが押せてstop serviceは押せない状態。
原因が分かる方いますか?

825 :デフォルトの名無しさん:2010/04/25(日) 02:56:00
$TOMCAT_HOME/logs/catalina_log を見ろ。
8080ポート使ってるとかじゃないのか。

826 :デフォルトの名無しさん:2010/04/25(日) 03:00:33
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path

not foundってなってるからこれが原因かなぁ・・・。

827 :デフォルトの名無しさん:2010/04/25(日) 03:01:22
それは無視していい。

828 :デフォルトの名無しさん:2010/04/25(日) 03:01:47
あと、monitor tomcat自体の起動には成功するけど、
start serviceしないんですがそれでも8080の問題ってことはありますか?

829 :デフォルトの名無しさん:2010/04/25(日) 03:13:51
その問題はよくある
OSが64bitだったりVistaや7だとありがち

830 :デフォルトの名無しさん:2010/04/25(日) 03:15:14
両方当てはまります。
どうすればいいんでしょうか?

831 :デフォルトの名無しさん:2010/04/25(日) 03:18:41
32bit版を使う

832 :デフォルトの名無しさん:2010/04/25(日) 03:24:40
32-bit/64-bit Windows Service Installer

インストーラは32か64かを選択する機会を与えてくれませんでした。
どうすれば32の方でインストールできますか?

833 :デフォルトの名無しさん:2010/04/25(日) 03:28:59
ここは問診の場じゃねぇんだ。情報を小出しにするならどこか別のチャットでやれ。

834 :デフォルトの名無しさん:2010/04/25(日) 03:29:11
古いインストーラを使う
探してなければ本についてる奴とかを使う

835 :デフォルトの名無しさん:2010/04/25(日) 03:40:58
うちはWindows7(64bit)でApache(32bit)を起動してる
2010/04/25 3:26:39 org.apache.catalina.core.AprLifecycleListener init
情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:
C:\Program Files (x86)\Apache Software Foundation\Tomcat 6.0\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;
C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\WIDCOMM\Bluetooth Software\;
C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;
C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Java\jdk1.6.0_17\bin;C:\Program Files\MySQL\MySQL Server 5.5\bin;
C:\Program Files (x86)\Apache Software Foundation\apache-ant-1.7.1\bin;C:\Program Files (x86)\QuickTime\QTSystem\;
2010/04/25 3:26:39 org.apache.coyote.http11.Http11Protocol init
情報: Coyote HTTP/1.1を http-8080 で初期化します
2010/04/25 3:26:39 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 1491 ms
2010/04/25 3:26:39 org.apache.catalina.core.StandardService start
情報: サービス Catalina を起動します
2010/04/25 3:26:39 org.apache.catalina.core.StandardEngine start
情報: Starting Servlet Engine: Apache Tomcat/6.0.20
2010/04/25 3:26:47 org.apache.coyote.http11.Http11Protocol start
情報: Coyote HTTP/1.1を http-8080 で起動します
2010/04/25 3:26:47 org.apache.jk.common.ChannelSocket init
情報: JK: ajp13 listening on /0.0.0.0:8009
2010/04/25 3:26:47 org.apache.jk.server.JkMain start
情報: Jk running ID=0 time=0/54 config=null
2010/04/25 3:26:47 org.apache.catalina.startup.Catalina start
情報: Server startup in 8402 ms


836 :デフォルトの名無しさん:2010/04/25(日) 03:43:52
質問です

致命的: ********** FATAL ERROR STARTING UP STRUTS-SPRING INTEGRATION **********
Looks like the Spring listener was not configured for your web app!
Nothing will work until WebApplicationContextUtils returns a valid ApplicationContext.
You might need to add the following to web.xml:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

検索してみると、このエラーが出たときはSpringプラグインを外せばいいようなことは分かったんですが
具体的にSpringプラグインって「どこにあって」「どう外せば」いいんですか?

Eclipse3.5のヘルプの新規ソフトウェアのインストール…というところに
「すでにインストールされている のは?」というリンクがあって
そこに入っているプラグインが全部表示されるんですけど
「スプリング」や「Spring」という名前のプラグインは見当たりません



837 :デフォルトの名無しさん:2010/04/25(日) 05:10:58
>>836
私には分かりません。

まず、最初のエラーメッセージはどこで出力されましたのか分かりません。
メッセージの内容から、Servlet(のSpringライブラリ)起動時のエラーメッセージであり、
Eclipse(のSpringプラグイン)のエラーとは無関係ではないかと思っています。

次に、「(Eclipseの)Springプラグインを外せばいいようなことは分かった」経緯が分かりません。
検索した際のキーワードや、原因が「Springプラグイン」だと判断できたURLは明記して欲しいです。

あと、開発環境(ディストリビューションや追加したプラグイン)、
実行環境(APサーバ名、Java/Servletのバージョン)
ソースコードで使用しているライブラリや
Springライブラリ・プラグインを使用した経緯などを具体的に記述すれば、
誰かが答えてくれるかもしれません。


838 :デフォルトの名無しさん:2010/04/25(日) 07:30:21
仮想環境のUbuntuでやればいいのに

839 :デフォルトの名無しさん:2010/04/25(日) 10:45:33
なんでtomcat系はバカが多いの?

840 :デフォルトの名無しさん:2010/04/25(日) 14:07:38
>>839 バカだからにきまってるじゃん


841 :デフォルトの名無しさん:2010/04/25(日) 14:53:12
一時期やたらtomcatの入門本出てたからじゃない?

842 :デフォルトの名無しさん:2010/04/25(日) 14:55:27
tomcat自身そもそも初心者向きだろ

843 :デフォルトの名無しさん:2010/04/25(日) 15:52:23
public static void main(String[] args) throws IOException {
File f = new File("C:\\usr\\Java\\commons-io-1.4.jar");
if (!f.exists()) {
throw new FileNotFoundException(f.getCanonicalPath());
} else {
System.out.println(f.getCanonicalPath());
}
// URL url = new URL("file://" + f.getCanonicalPath());
URL url = new URL("jar:file://" + f.getCanonicalPath() + "!/");
URLClassLoader lo = URLClassLoader.newInstance(new URL[] { url });
String classname = "org.apache.commons.io.CopyUtils";
try {
System.out.print(classname);
Class<?> c = lo.loadClass(classname);
System.out.println(" is found");
} catch (ClassNotFoundException e) {
System.out.println(" is not found");
e.printStackTrace(System.out);
}
}

の結果が
C:\usr\Java\commons-io-1.4.jar
org.apache.commons.io.CopyUtils is not found
java.lang.ClassNotFoundException: org.apache.commons.io.CopyUtils
以下省略
になってしまうのですが、どこを間違えているのかわかりません。教えてください。
Jarを解凍して確認してみましたが、
2008/01/17 03:14 2,933 CopyUtils.class
と存在しています。

844 :デフォルトの名無しさん:2010/04/25(日) 17:22:07
>>812
一つめのサイトはデザイン的に「Oracleのサイト」という言い方をされても仕方ないと思うが。

>>813
J2EEとSEの違いとEJBの関連がわかってたらそんな発言は出てこないと思うのだが
EJB使いたきゃJBoss Seam使えば?EJB3.1はいいらしいよ。
もっと軽くもっと簡単にやったほうがいいと思うけど

845 :デフォルトの名無しさん:2010/04/25(日) 17:24:35
¥¥を/に変換しなきゃいけなくなくないじゃないの?

846 :デフォルトの名無しさん:2010/04/25(日) 17:37:59
>>845
URL url = new URL("jar:file://" + f.getCanonicalPath().replace('\\','/') + "!/");
System.out.println(url.toString());
としてやってみた。
C:\usr\Java\commons-io-1.4.jar
jar:file://C:/usr/Java/commons-io-1.4.jar!/
org.apache.commons.io.CopyUtils is not found
java.lang.ClassNotFoundException: org.apache.commons.io.CopyUtils
と変わらず。
URL url = new URL("file://" + f.getCanonicalPath().replace('\\','/'));
// URL url = new URL("jar:file://" + f.getCanonicalPath().replace('\\','/') + "!/");
とfile:形式でも試してみる。
C:\usr\Java\commons-io-1.4.jar
file://C:/usr/Java/commons-io-1.4.jar
org.apache.commons.io.CopyUtils is not found
java.lang.ClassNotFoundException: org.apache.commons.io.CopyUtils
と変わらず。

847 :デフォルトの名無しさん:2010/04/25(日) 17:40:48
f.toURL()

848 :デフォルトの名無しさん:2010/04/25(日) 18:09:55
Cから入るとjavaの文字列操作のうんこにきづかされるよね

849 :デフォルトの名無しさん:2010/04/25(日) 18:15:05
>>847
あっ

C:\usr\Java\commons-io-1.4.jar
file:/C:/usr/Java/commons-io-1.4.jar
org/apache/commons/io/CopyUtils.class
jar:file:/C:/usr/Java/commons-io-1.4.jar!/org/apache/commons/io/CopyUtils.class
org.apache.commons.io.CopyUtils is found

ということは file: の後ろの / は一個!?

URL url = new URL("file:/" + f.getCanonicalPath().replace('\\','/'));
で試してみると。
C:\usr\Java\commons-io-1.4.jar
file:/C:/usr/Java/commons-io-1.4.jar
org/apache/commons/io/CopyUtils.class
jar:file:/C:/usr/Java/commons-io-1.4.jar!/org/apache/commons/io/CopyUtils.class
org.apache.commons.io.CopyUtils is found
と通りました。

850 :836:2010/04/25(日) 18:47:30
>>837
情報が足りなくてすみませんでした

>最初のエラーメッセージはどこで
Tomcat起動時のエラーメッセージです

>「(Eclipseの)Springプラグインを外せばいいようなことは分かった」経緯
http://old.nabble.com/Spring-Error-without-Spring-td21418471.html
>If the Spring plugin is on the classpath, S2 will attempt to use it.
和訳)クラスパス上にSpringのプラグインがあれば、Struts2はそれを使おうとする
>when i copied the jars from the new distribution download i copied some
plug-ins that caused these errors. the plugins are removed and
everything is fine now.
和訳)私は新しいディストリのjarからコピーするときに
幾つかのプラグインをコピーしてしまって、それがエラーを起こしていたようだ
それらのプラグインは外されたので今はすべて正常に機能している

OS: WindowsVista
環境: Eclipse3.5 + Pleidas
追加したプラグイン:
ライブラリ: struts-2.0.14-lib.zipのうち、
freemarker-2.3.8.jar commons-logging-1.0.4.jar struts2-core-2.0.14.jar xwork-2.0.7.jar ognl-2.6.11.jar の5つ

apache2.2 & apache-tomcat-6.0.26
Springライブラリ・プラグインの設定については
現在読んでいる本の付いているCD-ROMのwarファイルに含まれているようでして
自分で意図的に設定したわけではありません

追記ですが、エラーを辿るとxwork-2.0.7.jarの中に
public class SpringObjectFactory extends ObjectFactory
というのがあって、そこからエラーが発生しているように見えます
↓にエラーの内容を貼っておきます 必要であれば補足します

851 :836:2010/04/25(日) 18:52:24
2010/04/25 18:36:29 org.apache.coyote.http11.Http11Protocol init
情報: Coyote HTTP/1.1を http-8080 で初期化します
2010/04/25 18:36:29 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 897 ms
2010/04/25 18:36:30 org.apache.catalina.core.StandardService start
情報: サービス Catalina を起動します
2010/04/25 18:36:30 org.apache.catalina.core.StandardEngine start
情報: Starting Servlet Engine: Apache Tomcat/6.0.26
2010/04/25 18:36:31 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
情報: Parsing configuration file [struts-default.xml]
2010/04/25 18:36:31 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
情報: Parsing configuration file [struts-plugin.xml]
2010/04/25 18:36:31 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
情報: Parsing configuration file [struts.xml]
2010/04/25 18:36:31 org.apache.struts2.config.Settings getLocale
警告: Settings: Could not parse struts.locale setting, substituting default VM locale
2010/04/25 18:36:31 org.apache.struts2.spring.StrutsSpringObjectFactory <init>
情報: Initializing Struts-Spring integration...
2010/04/25 18:36:31 org.apache.struts2.spring.StrutsSpringObjectFactory <init>
致命的: ********** FATAL ERROR STARTING UP STRUTS-SPRING INTEGRATION **********
Looks like the Spring listener was not configured for your web app!
Nothing will work until WebApplicationContextUtils returns a valid ApplicationContext.
You might need to add the following to web.xml:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2010/04/25 18:36:31 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ struts の起動中の例外です

852 :836:2010/04/25(日) 18:56:28
java.lang.NullPointerException
at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:189)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyResultType(XmlConfigurationProvider.java:479)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addResultTypes(XmlConfigurationProvider.java:450)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:407)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:205)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3838)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

853 :836:2010/04/25(日) 19:12:01
xworkを古いヴァージョンにして自己解決しました

854 :デフォルトの名無しさん:2010/04/25(日) 20:09:01
>>766
SwingならSun(Oracle)本家。
http://java.sun.com/docs/books/tutorial/uiswing/

研究用のプログラムで自分1人しか触らないのなら、
オブジェクト指向については必要だと感じてから勉強してもいいんじゃないかなあ。

855 :デフォルトの名無しさん:2010/04/25(日) 20:23:59
>>772
http://www.unkar.org/read/pc12.2ch.net/tech/1253197333/1263031297
の690あたりを参照。

856 :デフォルトの名無しさん:2010/04/25(日) 21:09:53
>>844
それだと、EclipseのViewにJava EEがないじゃん


857 :856:2010/04/25(日) 21:11:25
すまん、パースペクティブだった

858 :デフォルトの名無しさん:2010/04/25(日) 21:37:15
型パラメータのクラスオブジェクトを取得するトリックは存在しないでしょうか?

具体的には、任意の型が、型パラメータとした型のサブクラスかどうかを総称
クラスの中でフィルタリングしたいという用途です。

フィルタしたクラスオブジェクトをコレクションとして取り出すため総称型を
使いたいと考えています。しかし、型パラメータのクラスを特定出来ないので
フィルタできないでいます。

http://www.ibm.com/developerworks/jp/java/library/j-djc03113/
は、型パラメータは消去されて上位の型として扱われてしまう(超訳)という
解釈ですが、だとすると、実行時に別途クラスオブジェクトを渡してやらないと、
駄目ということでしょうか。

class xxxx<T>
とクラス定義して
Class<? extends T> t = (Class<? extends T>)c;
とやっても型消去のせいか、確かに ClassCastException は起こりませんでした。

今は総称型は使わないでコンストラクタに Class<?> superc とクラスを渡して、
Class<?> t = c.asSubclass(superc);
を実行して ClassCastException が起こるかどうかでフィルタしています。

859 :デフォルトの名無しさん:2010/04/25(日) 22:08:21
面倒だから貼る
http://ideone.com/k8YV0
http://ideone.com/D8tJF
というユーティリティ作って
package myPlugin;
public interface myPlugin {
public String getString();
}
というインタフェースで
import myPlugin.myPlugin;
public class Plugin implements myPlugin {
public String getString() {
return "called Plugin#getString()";
}
}

package plug;
import myPlugin.myPlugin;
public class Plugin implements myPlugin {
public String getString() {
return "called plug.Plugin#getString() in myPluginSample2";
}
}
というプラグイン作って

860 :デフォルトの名無しさん:2010/04/25(日) 22:09:03
public class test {
public static void main(String[] args) throws IOException, InstantiationException, IllegalAccessException {
view("../myPluginSample/myPluginSample.jar");
System.gc();
view("../myPluginSample2/myPluginSample2.jar");
}
static void view(String path) throws IOException, InstantiationException, IllegalAccessException {
PluginLoader pl = new PluginLoader(new File(path), myPlugin.class);
for (Class<?> c : pl.getPlugins().values()) {
myPlugin p = (myPlugin)c.newInstance();
System.out.println(p.getString());
}
}
}
と動かしてる。
この http://ideone.com/D8tJF がなんとかならないかなーと。

861 :デフォルトの名無しさん:2010/04/25(日) 22:12:29
Google Data API の Java クライアントライブラリを使いたいんですが、
http://code.google.com/intl/ja/apis/gdata/articles/java_client_lib.html
↑この解説の意味がよく解りません。
Antを使ってサンプルを動かせるようにする、というまではいいのですが、
それを使って自分のコードをどうやってコンパイル・実行したらいいのか
という部分がどうも理解できません。
サンプルのAnt用xmlファイルを解析して勝手に作れということなのでしょうか???
どなたか、よろしくお願いします。


862 :デフォルトの名無しさん:2010/04/25(日) 22:25:20
>>861
http://code.google.com/intl/ja/apis/gdata/articles/java_client_lib.html#helloworld
を読んで作る。
もちろんAntは必修科目と言ってみよう。

863 :861:2010/04/25(日) 22:32:53
>>862
回答ありがとうございます。
そのセクションには、Ant関連の記述が見当たらないように思えるのですが、
そのJavaコードをコンパイルするAnt設定は自分で整える必要がある、ということですか?
サンプルのxmlから依存関係等を解析して…
かなり不親切な気もするのですが、そんなものなんですかね?

864 :デフォルトの名無しさん:2010/04/25(日) 23:28:48
SDKだからね、そんなもん。
慣れればAntなんかは楽勝だし、どの環境でも動作するシェルだと考えると、
かなり優秀で親切だと思うな。
コンパイル/実行の完全な手順が書かれているわけだから。

865 :デフォルトの名無しさん:2010/04/25(日) 23:38:21
>>858
メソッドの引数として型パラメータのクラスオブジェクトをもらう手がある。
もし、単に型パラメータのフィルタリングだけがしたいなら、extends句を使用して、
特定のクラス・インターフェースを継承したものしか、コンパイルできなくする手もある。

以下、サンプル
public class GenericTest {
public String getMessage(){
return "foo";
}
public static <T extends GenericTest> T getInstance(Class<T> clazz){
T result = null;
try {
result = clazz.newInstance();
} catch (Exception e) {
e.printStackTrace(System.err);
}
return result;
}
public static void main(String[] args) {
GenericTest test = GenericTest.getInstance(GenericTest.class);
if(test!=null){
System.out.println(test.getMessage());
}
//GenericTestを継承していないクラスはGenericTest.getInstanceメソッドは使用できない
//Object test2 = GenericTest.getInstance(Object.class);
}
}


866 :861:2010/04/25(日) 23:48:16
>>864
ありがとうございます。
なるほど、Antに関してはサンプルのxmlだけで必要十分というわけですね。
まあそういうことであれば、楽をするのは諦めて自力でやってみたいと思います。

867 :デフォルトの名無しさん:2010/04/26(月) 00:00:30
log4j使ってる人?

868 :デフォルトの名無しさん:2010/04/26(月) 00:02:19
凄い初心者なんですが質問させてください。
2DのCGを描画したいんですが、どんなAPIを使えば良いのかわからないので教えていただけませんか?

869 :デフォルトの名無しさん:2010/04/26(月) 00:52:26
嫌だ

870 :デフォルトの名無しさん:2010/04/26(月) 00:53:54
てめぇに聞いてねぇよでしゃばんなボケ

871 :デフォルトの名無しさん:2010/04/26(月) 01:22:38
>>868
WebはJavaで
ゲームはC++で作るのが
プログラマーの常識。

872 :デフォルトの名無しさん:2010/04/26(月) 01:53:31
>>868
java.awt.Graphics

873 :デフォルトの名無しさん:2010/04/26(月) 02:17:48
>>868
まず、どこに書きたいのかが分からない

874 :デフォルトの名無しさん:2010/04/26(月) 02:30:50
>>871
どうして?理由は?

875 :796:2010/04/26(月) 09:56:22
>801
やりたい事は、
テンプレートで指定した型"E"をパラメータにリフレクションでメソッドコールしたいって事なんですけど。
owner.getClass().getMethod( func , E.class ) ;


876 :デフォルトの名無しさん:2010/04/26(月) 10:54:03
>>875
その答えが>>801のparam.getClass()だろう。
>>756でParamって大文字表記になってるのはtypoだよな?


877 :デフォルトの名無しさん:2010/04/26(月) 11:12:19
>>876
うん

878 :796:2010/04/26(月) 13:21:22
>801
>876
失礼しました!
出来ましたコンパイル通りました。
ありがとう御座いました。


879 :デフォルトの名無しさん:2010/04/26(月) 19:07:46
新規案件でWebアプリやるならフレームワークなに使いますか?
Struts1/2/JSF2/JBoss Seamあたりで悩んでいるのですが。
業務経験はStruts1が5年、2が1年半くらいで他はありません。TeedaでJSFをちょこっとやったけど。
Struts2を使うつもりだったのですが日本ではあまり流行ってない(=他の人に引き継ぎにくい)し、
どれも一長一短でどうしたもんかなと思っているのですが。

880 :868:2010/04/26(月) 20:32:08
みなさんレスどうもです。

>>871
javaが手っ取り早いかと思いまして。

>>872
これ凄いですね、やってみます。

>>873
どこに、とはどういう意味でしょうか?
僕がイメージしているのは、xy座標系で、(x,y)にこの色で点を描く、みたいな感じです。

881 :デフォルトの名無しさん:2010/04/26(月) 20:33:46
>>879
SAStruts(seasar2)一択

882 :デフォルトの名無しさん:2010/04/26(月) 21:01:38
>>879
Struts2

883 :デフォルトの名無しさん:2010/04/26(月) 21:02:56
Strutsは糞

884 :デフォルトの名無しさん:2010/04/26(月) 21:23:55
Wicket

885 :デフォルトの名無しさん:2010/04/26(月) 22:19:36
ありがとうございます。見事にバラバラですね。
どれも調べると便利そうなのですが実際やってみるといろいろトライ&エラーが必要だし、
1,2個のプロジェクトで使って慣れた頃にはもっと便利そうなのがでて再勉強っていう
サイクルはもうやめたいんですよね。
ECS,Torque,struts-tiles,James... apache系だけでももう二度とやらないだろうなという
プロジェクトがこんもり。Wicketも便利そうだけどコンポーネント指向でデファクトスタンダードが
できてから移ろうかなと。JSF2がそれになるんじゃないかと思って候補に入れたんですが、
JSF1+Faceletsのサンプルは散見するけどJSF2で開発を始めるとっかかりがよくわからないし。

886 :デフォルトの名無しさん:2010/04/26(月) 22:22:23
2chで3行でまとめる技術がないやつがプログラムなんてやんなよ

887 :デフォルトの名無しさん:2010/04/27(火) 00:45:12
・・・は?

888 :デフォルトの名無しさん:2010/04/27(火) 00:47:37
>>887
どんだけ頭悪いんだよ。

889 :デフォルトの名無しさん:2010/04/27(火) 10:45:08
JDK1.6update19からjavaプラグインのセキュリティが変更になって、
署名付きのjarがapache-commons系の署名なしjarを読み込むとセリュリティエラーで実行できません。
ダイアログを無視すれば起動できますが、危険なコードです的な事を言われるので、
ユーザに無視させることを強要できません。

コントロールパネル→java でjavaコントロールパネルを開き
詳細タブ→セキュリティ→混合コード→検証を無効にする でダイアログを出さないことはできますが、
全てのアプレットが対象になり、そんな危険なことも強要できません。

log4jをアプレットで使用しているんですが、これにjp.co…の自社のキーで署名しても、
どうやら署名なしのjarとして扱われてしまいます。

サードパーティのjarをアプレットで使用する場合は、この警告からは逃れられないのでしょうか?

890 :デフォルトの名無しさん:2010/04/27(火) 11:24:30
>>879
おれも>>881に一票

フレームワークを使うなら、何を楽にしたいのかが重要なんだが、
そこら辺は考えてないの?

デザイン重視で、デザイナ入れるつもりなら
WicketにSpringとかSeasar2とか組み合わせるのもありかと。

891 :デフォルトの名無しさん:2010/04/27(火) 12:22:25
>>889
キャッシュされたJarファイルを見に行っているのでは?
ブラウザのキャッシュとJavaの一時ファイルを両方とも削除してみてはどうでしょうか。
Javaの一時ファイルは、Javaコントロールパネルから削除できます。


892 :デフォルトの名無しさん:2010/04/27(火) 13:06:04
>>891
いえ、キャッシュは削除しています。
実際にlog4j.jarも読み込んでるので。

893 :デフォルトの名無しさん:2010/04/27(火) 14:56:43
>>889
それってu18までは動いてた?

894 :デフォルトの名無しさん:2010/04/27(火) 15:03:52
>>889
http://java.sun.com/javase/6/docs/technotes/guides/jweb/mixed_code.html

895 :デフォルトの名無しさん:2010/04/27(火) 18:17:31
翻訳プリーズ

896 :デフォルトの名無しさん:2010/04/27(火) 18:32:10
PreparedStatementのexecuteBatchとはどういった使い方をするものなのでしょうか?

897 :デフォルトの名無しさん:2010/04/27(火) 21:22:37
確認したわけじゃないが、Statementと同じでaddBatch繰り返した後に一括実行
させる用途ではないか?

898 :デフォルトの名無しさん:2010/04/27(火) 21:58:02
複数の SQL (つうか DDL) を execute() でまとめて実行するためのもの。
RDBMS によっては毎回発行されるよりまとめて渡してもらった方が効率の良い
動きをするものもある。

899 :デフォルトの名無しさん:2010/04/27(火) 22:20:27
>>898
DDLってなんすか


900 :デフォルトの名無しさん:2010/04/27(火) 22:22:35
Digital Devil Language

901 :デフォルトの名無しさん:2010/04/27(火) 22:43:02
batchはDDLに特化してるわけじゃないからSQLでいいんじゃね?

902 :デフォルトの名無しさん:2010/04/27(火) 23:11:15
どちらかといえば大量のINSERT/UPDATE文突っ込んで実行するほうが
多いんじゃね?

903 :デフォルトの名無しさん:2010/04/27(火) 23:27:33
>>892
結局logj4のjarもorg.apache…のキーで署名しないとだめだよ。
署名されているjarをネットで探してみては?

904 :デフォルトの名無しさん:2010/04/28(水) 01:25:41
assert(value == null): value.getClass().getSimpleName();

の value.getClass()... の所で「valueは潜在的にnullの可能性があります」と
Eclipse 様からご指摘頂いたんだが、そんな可能性はないよな?

905 :デフォルトの名無しさん:2010/04/28(水) 01:38:34
>>904
assert後のコードから察するに、
本当はassert(value!=null)が正しいのでは?


906 :デフォルトの名無しさん:2010/04/28(水) 02:20:32
value == null はあくまで表面上のnullを検知しているだけだ
valueの真の潜在nullはそんなチンケなものじゃ検知できるはずがない

907 :デフォルトの名無しさん:2010/04/28(水) 02:42:39
>>905
インスタンス内で管理している Map に想定外のオブジェクトが入ってたケース
(ただし null はあり得る) を引っかけるアサーションだから assert(value==null)
で正しいです。

908 :デフォルトの名無しさん:2010/04/28(水) 02:52:23
nullでなく初期化されていない可能性って事かな?

909 :デフォルトの名無しさん:2010/04/28(水) 02:54:20
洗剤はヌルヌルしているもんだ

910 :デフォルトの名無しさん:2010/04/28(水) 05:53:57
プログラミング初心者です!どうぞよろしくお願いします。

public static void main(String args[]) {
int dt[] = {100, 200, 300};
int n = 0;

System.out.println(dt[n++]);
System.out.println(dt[n++]);
System.out.println(dt[n++]);
}

を実行した結果、dt[0]〜dt[2]が表示されるのは何故でしょうか?
最初のdt[n++]でnの値は1にならないのですか?

911 :910:2010/04/28(水) 06:00:44
自己解決致しました…。すみません。
こういう場合でも後加算されているのですね。

912 :デフォルトの名無しさん:2010/04/28(水) 06:31:32
int n = 0;
n = ++n * n++ + ++n * n++;
System.out.println(n); // 10

わかるかなー?

913 :910:2010/04/28(水) 07:05:14
>>912
何という難問!私のルールで解いてみますw

最初の++nで1
次の++nでn=2
最初の(++n * n++)で後加算を後回しにして2*2=4
最初の(++n * n++)の後加算を加え5となる。1ブロック目は5
2ブロック目も同じで5
合わせて10!

違いますね絶対。よかったら教えて頂けますか?

914 :デフォルトの名無しさん:2010/04/28(水) 07:13:27
public enum A{
X(1), Y(2), Z(3),
;
private static final Logger logger = Logger.getLogger("A");
private A(int a){
logger.fine("a=" + a);
}
}

logger の初期化より先にコンストラクタが実行されるから NullPointerException
が発生するんだよなぁ。何かいい方法はあるかいボブ?

915 :デフォルトの名無しさん:2010/04/28(水) 08:19:02
int n = 0;

n = n + 1;
int l = n * n;
n = n + 1;

n = n + 1;
int r = n * n;
n = n + 1;

n = l + r;

916 :デフォルトの名無しさん:2010/04/28(水) 11:57:43
オブジェクトの参照が保持されている変数には全てnullを入れて、
gc時の負荷を軽くしようとしてる。
って努力は報われているでしょうか?
当方Androidでアプリ開発しています。


917 :デフォルトの名無しさん:2010/04/28(水) 12:38:51
>>916
nullをセットしているのがメソッド内のローカル変数なら、殆ど意味がない。
どうせメソッド抜ければ、nullセットの有無にかかわらず、
参照の有無に応じてGCの対象になるんだから。
インスタンス変数なら、オブジェクトの寿命による、としか言えない。
長寿命のオブジェクトが不要な参照を持つのなら、さっさと参照を削除して
軽くした方がいい、というのはあるかな。


注意点として、Androidの中のDalvikVMは実装が違うので、
SunのJavaVMのつもりで考えていると間違った最適化を考えてしまうかも。
例えばJITコンパイルがないとかね。GC方式も違うかも。
今までの経験を元に「こうすれば軽くなるはず」と考えて事前に最適化するよりも、
ある程度動くようになってからプロファイリングして、事実を元にして
「ここが重いからこう直そう」と後で最適化を施した方がいいと思う。
SDKには、折角プロファイリング用のツールが付いてきてるんだから、
これを使わない手はない。

918 :ボブ:2010/04/28(水) 16:15:53
>>914
イニシャライザー?

919 :デフォルトの名無しさん:2010/04/28(水) 16:19:45
http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=10007&lang=jp
URL先の問題をJAVAで解きたいのですが数字をうまい事読み込めません
複数行いっぺんに入力した場合に初めの二つしか読み込めません
ふたつずつ入力したときは連続で入力してもうまいこと行きます


3 4
>3 4
4 3
>3 4
5 2
>2 5
2 3
2 2
5 3
>2 3
4 5
>4 5
0 0
終了

920 :デフォルトの名無しさん:2010/04/28(水) 19:06:44
>>914
ありえない。
スタックトレース貼ってみ

921 :デフォルトの名無しさん:2010/04/28(水) 19:09:32
すまんenumか。吊ってくる。

922 :デフォルトの名無しさん:2010/04/28(水) 20:32:49
xy座標の点が複数あって
その間の距離を計算して格納したいのですが

仮に点が100個あった場合、配列でdistance[100][100]とすると
点a-点bの距離は、もちろん点b-点aの距離と同じですし
半分近くの領域が無駄になってしまいますよね?

無駄のないようにそれぞれの点の間の距離を記録するにはどうすれば良いでしょうか?

923 :デフォルトの名無しさん:2010/04/28(水) 20:38:07
>>919
まず、どうやってるのか分からんから答えられる訳があるまい。
テキストファイルなら

BufferedReader in = new BufferedReader(
new FileReader(new File(testfile))
);
while ((line = in.readLine())!=null) {
System.out.println(line);
}
in.close();

で各行が読めるし、標準入力なら

BufferedReader in = new BufferedReader(
new InputStreamReader(System.in)
);
while ((line = in.readLine())!=null) {
System.out.println(line);
}


924 :デフォルトの名無しさん:2010/04/28(水) 20:47:23
>>922
点がpoint[]に入っているとして
step0: point[0] から point[1]〜[99] までの距離をそれぞれ求める。
step1: point[1] から point[2]〜[99] までの距離をそれぞれ求める。
・・・
stepN: point[N] から point[N+1]〜[99] までの距離をそれぞれ求める。
・・・
最後に point[98] から [99] までの距離を求める。
とすればいい。

925 :922:2010/04/28(水) 20:58:43
>>923-924
すいません、言葉足らずでした

点の情報は、すべてプログラム上でPoint2Dの配列に格納しています
同じように点と点との距離を求めて、配列なりリストなりに記録したいのです

計算自体は
for(int i=0; i<point.length()-1; i++){
for(int j=i; j<point.length(); j++){
point[i].distance( point[j] );
}
}
というように書けば計算できるのですが
いざこれを記録するとなると

例えば配列だと
[4][3][3][2][7]
[ ][4][5][6][7]
[ ][ ][5][6][7]
[ ][ ][ ][1][3]
[ ][ ][ ][ ][7]
という風に、半分近くの領域が無駄になってしまうのが気になるのです
かといってリストだと、後から参照する時に順番が難しく扱いづらいように感じます

うまく点と点との距離を記録する方法はないでしょうか?

926 :デフォルトの名無しさん:2010/04/28(水) 21:11:37
言葉足らずってレベルじゃねーぞ

927 :デフォルトの名無しさん:2010/04/28(水) 21:29:53
java classファイルをコマンドプロンプトから実行しようとしたら、
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
と出ました。コンパイルは出来たみたいなのですがどういうことでしょうか?

928 :デフォルトの名無しさん:2010/04/28(水) 21:35:12
>>1

929 :デフォルトの名無しさん:2010/04/28(水) 21:40:14
クラスパスはパソコンを買ったときからいじってなくて、
.;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip
となっているのですがこれが問題あるのでしょうか?

930 :デフォルトの名無しさん:2010/04/28(水) 21:58:04
staticなメソッドやフィールドを同じクラス内のstaticなメソッドから使用するとき
クラス名つけて使用したほうがいいの?そのまま使用したほうがいいの?
↓こういうの

class ClassA {
 private static int var1 = 0;

 public static void Hoge() {
  var1++; //←ここって ClassA.var1++; にしたほうがいいの?
 }

 public static void Hoge2() {
  Hoge(); //←ここって ClassA.Hoge(); にしたほうがいいの?
 }
}



931 :デフォルトの名無しさん:2010/04/28(水) 22:07:08
好きにしろ

932 :デフォルトの名無しさん:2010/04/28(水) 22:08:09
入門書に書いてあるようなことを訊く奴はバカ

933 :デフォルトの名無しさん:2010/04/28(水) 22:10:34
>>1より

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
ttp://www.wikiroom.com/java/


934 :919:2010/04/28(水) 22:22:23
>>923
ありがとうございます。解決しました
言葉足らず申し訳ありませんでした
今回は標準入力からということでした
とにかくありがとうございました

935 :デフォルトの名無しさん:2010/04/28(水) 22:23:33
>>925
一応、

double[][] point = new double[100][] ;
for (int i = 0 ; i < 100 ; i++) {
point[i] = new double[i] ;
}

という感じで、各行の列数の異なる2次元配列を作ることは可能だぞ。


936 :デフォルトの名無しさん:2010/04/28(水) 22:24:14
入門書にはPathの設定は載ってるんですが、
class pathを設定する話は見当たらないのですが、
class pathはどこをしていすればいいんですか?

937 :デフォルトの名無しさん:2010/04/28(水) 22:45:24
色々検索してみたら
どうやらQuickTimeをインストールすると
classpathが狂うということが分かりました。
身に覚えがあるので解決策も検索してみます。
お騒がせしました。

938 :922:2010/04/28(水) 22:49:18
>>935
それは盲点でした!
その方向でいってみようと思います
ありがとうございます!

939 :デフォルトの名無しさん:2010/04/29(木) 00:58:23
C言語の system() みたいに
簡単にプロセスを起動できるようなクラスを以前作ったのだけど
http://ideone.com/XVeT7
↓ソースコードのダウンロードはここから
http://ideone.com/plain/XVeT7

たとえば
 EasyProcess.start("rm", "-vi", "foo.txt");
みたいに書くと、ちゃんとファイル削除前に確認もしてくれるよう作ったのだけど
ひょっとしたらLinuxとかではうまくいかないかもと不安になったので
環境を持ってる人だれか試してみてくれないかな。
たしかUNIX系OSでは標準入出力と端末が結びついていないと
-i オプションが無視されるとか聞いたことがあるので。

ちなみにWindowsのコマンドプロンプトやCygwinではOKでした。

940 :デフォルトの名無しさん:2010/04/29(木) 01:19:55
コード見ただけで System.in から読み込んで stdin へ渡すスレッドがプロセス終わっても起動しっぱなしの悪害プログラム。

941 :デフォルトの名無しさん:2010/04/29(木) 01:50:36
そうそう
「ついでにバグがあったら教えてくれると嬉しい」って
>>939 に書こうとして忘れてた。
>>940 ありがとう。

public static void main(String[] args) {
  // ...
  // Java で事前の処理を行ってから
  // 他のプログラムに渡す

  EasyProcess.start(...);
}

こんな感じの使い方を想定してたので
プロセスが終了した後のことをあんまり考えてなかった。
いちおうプロセス終了後に System.in から読み込もうとすると
Transfer スレッドも終了するようにはなってるんだけど。


942 :939:2010/04/29(木) 02:07:45
考え始めてみたら、意外と難しいな。
System.in を転送するスレッドをどうやって止めればいいんだろう。
簡単な方法はあるのかな。

あと Windows で System.in.markSupported() が true を返したので
どの環境でも System.in はマークをサポートしてるだろう
という前提で書いてしまったけど、これも問題になるかも。


943 :デフォルトの名無しさん:2010/04/29(木) 06:04:41
自分でubuntuとかで試せばいいだろう

944 :デフォルトの名無しさん:2010/04/29(木) 08:29:33
>>942
そういうのcommonsにあったような。
antのコードを見たんだっけかな?

945 :デフォルトの名無しさん:2010/04/29(木) 09:51:29
便乗だけど、antって使うと何がいいの?
ウィキ読んでもさっぱり分からない
OSが変わっても同じようにコンパイルできるってこと?
逆にantを使わなかったら何か面倒なことあるの?
コンパイルなんて「実行」押したら済むでしょ?

946 :デフォルトの名無しさん:2010/04/29(木) 10:30:15
仕事で使うならコンパイルだけじゃ済まないの。
ビルド番号更新して JAR 作って署名して javadoc 作って別チーム参照用のファイルサーバに
コピーしたり、イミフ な CSV の定義ファイルからデータテンプレート作ったり、クラスの本数で
開発管理用ファイル更新したり。

まぁ Ant である必要性が無いのはそうだな。行き当たりばったりで作った仕様っぽくて言語
として使いづらい。あとあれ作った奴は流行りで XML 使っただけだろ。スキーマも書けない
糞 XML 仕様。

947 :945:2010/04/29(木) 12:14:38
>>946
一応よく分からずに使ってはいるんだけど、
そんなややこしい作業があったのね
ありがdでした


948 :デフォルトの名無しさん:2010/04/29(木) 19:46:54
FileInputStream(FileOutputStream)のclose()がIOExceptionを投げる
のはどんな状況のときでしょうか?
それと、close()が失敗したときにどのような処理をすべきでしょうか?
現在IOExceptionを握りつぶすくらいしか思いつきません・・

現在
void hoge() /* throws IOException */ { // IOException を搬出してはいけない仕様になっています
    InputStream istr = null;

    try {
        istr = new BufferedInputStream(new FileInputStream("hoge.txt"));
        // istr を使って色々処理
    }
    finally {
        try {
            if (istr != null) {
                istr.close();
            }
        }
        catch (IOException e) {
            // 握りつぶす
        }
    }
}
のような関数を書いているのですが、どうも糞コードのような気がしてなりません。
皆さんなら上記のプログラムをどのように書き直すでしょうか?
冒頭の質問と合わせてお願いします。。。

949 :デフォルトの名無しさん:2010/04/29(木) 19:55:42
>>948
close()時のIOExceptionはディスクエラーぐらいしか思いつかんけど。

あえて言うとすれば毎回書くのはアレだから
public static void closeQuietly(Closeable closeable) { if (closeable != null) try { closeable.close() } catch (IOException e){} }
みたいなメソッド作って使いまわすぐらいか。

950 :デフォルトの名無しさん:2010/04/29(木) 20:06:02
Lock の解放に失敗、出力ストリームならバッファのフラッシュに失敗、低レベル I/O 処理中に
プロセスが中断シグナル拾った、OS や JavaVM がおかしくなっているなど。
対応としてはログ吐いて握りつぶすか IllegalStateException でも投げるしかねぇな。

public static void close(Closeable c){
   try{
       if(c != null)  c.close();
   } catch(IOException ex){
       logger.log(Level.SEVERE, "クローズに失敗", ex);
   }
   return;
}

ちゃんと作る時は (全経路テストこなすために) ユーティリティ機能として実装する。

InputStream in = null;
try{
   in = new FileInputStream(file);
   ....
} finally {
   IO.close(in);
}

951 :デフォルトの名無しさん:2010/04/30(金) 03:04:21
質問です。このソースの訳を教えていただきたいのですが、
もし、パラメータの値が無かったら配列なしのString型のValuesが作られnullが代入され(1行目)
ValuesがnullだったらValuesの配列1個作り”0”を代入しなさい という意味でOKですよね。(if文以降)

逆にYasaiにパラメータに2個渡されてたらValues[0]、Values[1]が作られ(1行目)
それぞれの配列に値が渡される。
Valuesがnullだったら、、、んあれ・・・・ Values[0]とValuesは同じ???(if文以降)
複数渡されてたらValuesなんて宣言された無いから怒られるんじゃ・・・。

それともValues[0]もValues[1]も大きなくくりではValuesだからif文が通るのか・・・。

かなり混乱気味です。夜分遅くですが教えていただけると助かります。


String[] Values=request.getParameterValues("Yasai");
if(Values==null){
Values=new String[1];
Values[0]="0";
}




952 :デフォルトの名無しさん:2010/04/30(金) 03:29:36
何がわかってないのかがわからないので、何を教えていいのかわからない
配列が理解出来てないのか?

そのソースにコメント振ると
Values に Yasai を代入。Yasai がないときは {"0"} を代入
て感じ

953 :デフォルトの名無しさん:2010/04/30(金) 10:09:05
質問です。
一つのint型変数を用意してメモリ使用量/全体量
をコンソールに出力するだけのコードを書いてみたのですが、
変数に0等の小さい値を入れた場合と巨大な値を入れた場合とで
メモリ使用量に違いが出ていました。(値はリテラルで指定してます)
Javaのint型は4バイトのメモリ領域を使用したと思うのですが、
代入した値によってメモリ使用量が変動してしまうのはなぜなんでしょうか?

954 :デフォルトの名無しさん:2010/04/30(金) 10:14:01
んなばかな

955 :デフォルトの名無しさん:2010/04/30(金) 10:16:10
>>953
コードが示されていないので推測するしか無いが
コンソールに出力する文字列生成時に桁数が多い分どっかでメモリ食ってるんじゃないか?

956 :デフォルトの名無しさん:2010/04/30(金) 10:32:43
public static void main(String[] args) {
int i = 0; // 2147483647
System.out.println(i);
System.out.println(Runtime.getRuntime().freeMemory() + "/" + Runtime.getRuntime().totalMemory());
}

iの数値が0でも2147483647でも俺の環境だと変わらないな。
iをメソッドの外に出してstatic装飾子付けても変わらなかった。

957 :デフォルトの名無しさん:2010/04/30(金) 11:39:47
ソケットをコネクションしていざ書きこもうと思ったとき、相手プロセスがコネクションを切ってしまい非活性になりました。
したしsocket.isClosed()してもfalseになり、writeするとエラーになります。

書き込み前にソケットの状態を確認し、相手がクローズしていたら、再度コネクションを張り直し処理を続行しようと思っています。
その場合のロジックを教えていただけないでしょうか?

958 :デフォルトの名無しさん:2010/04/30(金) 11:51:57
書き込みで例外が発生したら、コネクション張りなおし…じゃだめなのか?

959 :デフォルトの名無しさん:2010/04/30(金) 12:29:29
1. SocketAddress を引数に取る OutputStream クラスを作成。
2. コンストラクタ内で接続し出力ストリームを保持しておく。接続に失敗したら例外。
3. write メソッド内で例外が発生したら再接続。再接続に失敗したら例外。

960 :デフォルトの名無しさん:2010/04/30(金) 14:53:27
>>954-956
レスありがとうございます。
検証までして頂いてとても参考になりました。

後出しで申し訳ないのですが、Java環境はCLDC1.1/MIDP2.0です。
Javaである以上基本的な仕様は変わらないだろうと勝手に思い込んでいたのですが
KVM環境では事情が違う?のかも知れないですね。
CLDC/MIDPスレで質問すべき事だったかも知れません。

検証コードの内容は>>956と同等のものですが、
開発環境付属のKVMエミュレータと、携帯電話実機環境(OAP)のどちらも
やはりint iへ代入する値によってメモリ使用量に違いが出てきます。

i=0のときのfreeMemory() => 479820(実機では1534388)
i=100のときのfreeMemory() => 479820(実機では1534384)
i=2147483647のときのfreeMemory() => 479808(実機では1534304)

961 :デフォルトの名無しさん:2010/04/30(金) 15:29:05
>>960
>検証コードの内容は>>956と同等のものですが、
まったく一緒なのかね?少しでもソースが違えば生成されるコードが違う可能性あるんだから、
いい加減な情報出されても判断の仕様がない。
>>954の可能性に加えて、i の値を定数扱いして小さい数値だとより短いコードをコンパイラが出してるのかもしれない。
生成されたコード比較してみな。

962 :953,960:2010/04/30(金) 16:06:29
>>961
レスありがとうございます。
バイトコードの違いも調べましたが、
i=0のiconst_0 と、
i=2147483647のldc1 <Int 0x7fffffff>
のスタックに積む部分以外は同一です。

長くなりますが、ソースコード全文を貼らせて頂きます。
(エミュレータ環境ではコメントアウト部分のみで結果の出力を得られますが、
実機では標準出力が利用できない関係上、出力のためのコードを設けてあります。)

/* Test.java */
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class Test extends MIDlet {
private TestCanvas canvas;
public Test() {
int i = 0; //100 //2147483647
//System.out.println(Runtime.getRuntime().totalMemory());
//System.out.println(Runtime.getRuntime().freeMemory());
String[] results = {
Long.toString(Runtime.getRuntime().totalMemory()),
Long.toString(Runtime.getRuntime().freeMemory())
};
canvas = new TestCanvas();
canvas.setResults(results);
Display.getDisplay(this).setCurrent(canvas);
}
public void startApp() {}
public void pauseApp() {}
public void destroyApp(boolean flag) {}
}

963 :953,960:2010/04/30(金) 16:09:01
【続き】
/* TestCanvas.java */
import javax.microedition.lcdui.*;
class TestCanvas extends Canvas {
private String[] results;
public TestCanvas() {}
public void setResults(String[] results) {
this.results = results;
}
public void paint(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 0);
g.drawString(results[0], 2, 10, Graphics.LEFT|Graphics.TOP);
g.drawString(results[1], 2, 25, Graphics.LEFT|Graphics.TOP);
}
}

964 :デフォルトの名無しさん:2010/04/30(金) 16:09:29
class MyTest {
 public static void main(String[] arg) {
  int a=100,b=100,c=50,d=100,e=50;
  a+=--a+a--;
  b+=b---c;
  e+=d---e;
  System.out.println("a="+a);
  System.out.println("b="+b);
  System.out.println("c="+c);
  System.out.println("d="+d);
  System.out.println("e="+e);
 }
}
おまえら、これ実行後のa,b,c,d,eの値を予想できる?


965 :デフォルトの名無しさん:2010/04/30(金) 16:12:28
コンパイラによって値が変わる

966 :デフォルトの名無しさん:2010/04/30(金) 16:18:22
>>962
int型は環境に関係なく常に4バイトです。ただし、PrintStream#println(int)はパラメータ
で受け取ったint値を一旦文字列かchar[]に変換しているため、10進文字列化したときの
桁数が違えば当然ヒープメモリ消耗量が変わります。

967 :デフォルトの名無しさん:2010/04/30(金) 16:28:06
>>957
リモート側が何の通知もなしに通信を切断した場合に通信リンクが
有効かどうかを確認するには、何かのパケットをリモートマシンに
送信してみる必要がありますが、そういう命令がTCPにないと思います。
ためしにデータを送ってみるしか無いでしょう。

int retry = 3;
while ( retry > 0 ) {
if ( trySendData(送りたい情報+あて先) ) {
break;
}else {
retry--;
}
}
private void trySendData(いろんな引数) {
Socket sock = null;
try {
送信処理();
return true;
}catch ( Exception e ) {
return false;
}finally {
if ( sock != null ) try { sock.close(); } catch ( Throwable t ) {}
}
}

968 :デフォルトの名無しさん:2010/04/30(金) 16:33:09
>>962
Javaの生成コードはよくしらないが
>i=0のiconst_0 と、
>i=2147483647のldc1 <Int 0x7fffffff>
この二つはバイトサイズ一緒なのかい?
ちょっとだけぐぐってみたけど、JavaのコードってまるでFORTHだね

969 :デフォルトの名無しさん:2010/04/30(金) 16:35:16
>>964
a が 100 + 99 + 99 = 298 で、
b は 100 + 100 - 50 = 150 で、
c は変わらんから 50 と。
面倒なので以下略。

970 :953,960,962:2010/04/30(金) 17:02:57
度々レスありがとうございます。

>>966
i=0、i=2147483647の両ケースともメモリ使用量の桁数は揃っているため、出力のための
文字列化ではヒープメモリ消費量は変わらないのでは無いかと思いますが、間違ってるでしょうか?

>>968
バイトサイズ?というのはどう言う事ですか?
Javaの4バイトのint型の範囲(-2147483648〜2147483647)内ですが、
そう言う事ではなくてですか?

また、ライフタイムの怪しい>>962のString[] resultsをメンバ変数に
してみましたがメモリ使用量には違いが出たままです。

971 :デフォルトの名無しさん:2010/04/30(金) 17:10:13
>>969
a=298
b=150
c=50
d=99
e=100

になった

972 :デフォルトの名無しさん:2010/04/30(金) 17:18:27
だから?

973 :デフォルトの名無しさん:2010/04/30(金) 17:25:30
>>970
俺もオープンアプリやってるからうち帰ったら試してみるわ
>>962のソースでメモリ使用量が違うってのは興味深いな

974 :デフォルトの名無しさん:2010/04/30(金) 18:39:35

質問です。
html側で入力された、半角スペースで区切られた数字列を、アプレット側で呼び出して
StringTokenizerを使ってばらしたいのですが、


<html側>
<param name="data" value="123 123 222 333">

<アプレット側>
StringTokenizer data = new StringTokenizer("getParameter("data")");


という風にやって見たところ、この行について 文ではありません。というエラーが発生しました。
new StringTokenizer("");の括弧の中に
getParameter("data")を入れたのが悪いのだろうとおもっているのですが、
変数をStringTokenizerでばらす場合にどういった操作をすればいいのでしょうか?

975 :デフォルトの名無しさん:2010/04/30(金) 18:46:42
>>974
new StringTokenizer(getParameter("data"));


976 :デフォルトの名無しさん:2010/04/30(金) 18:58:17
>>975
なるほど!ありがとうございました。

977 :968:2010/04/30(金) 19:04:49
>>970
生成される命令コードの長さが違うのかと思ったが、ちと違うようだ、以下wikiから引用
# ldc - コンスタントプール内の4バイトの定数(int,float,String)の内1バイト以内でエントリ番号を指定できるものをスタックに積む。
# iconst_m1, iconst_0, iconst_1, iconst_2, iconst_3, iconst_4, iconst_5 - intの-1,0,1,2,3,4,5をスタックに積む。
これ見ると、どっちも命令長は1バイトだが、「コンスタントプール内」に定数のエリアが確保されるかどうかの違いがある
とりあえず、その分はメモリ使用量に違いは出るのだろう。


978 :デフォルトの名無しさん:2010/04/30(金) 19:31:19
>>964
>b+=b---c;
これってなんでbは150になるの?


979 :デフォルトの名無しさん:2010/04/30(金) 20:02:19
b---c は b-- - c になる。

http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.2
> The longest possible translation is used at each step,
> even if the result does not ultimately make a correct program
> while another lexical translation would.
> Thus the input characters a--b are tokenized (§3.5) as a, --, b,
> which is not part of any grammatically correct program,
> even though the tokenization a, -, -, b could be part of a grammatically correct program.

980 :デフォルトの名無しさん:2010/04/30(金) 20:14:44
149にならないのは何故?

981 :デフォルトの名無しさん:2010/04/30(金) 20:18:52
なんで149になるんだ?

982 :デフォルトの名無しさん:2010/04/30(金) 20:22:17
b+= b-- - c
って
b=b+ b + c
b=b - 1
ってことじゃないの?


983 :デフォルトの名無しさん:2010/04/30(金) 20:23:24
>>978
1. b と c の値をロードする。仮に t1=b; t2=b; t3=c; としよう。
2. b をデクリメントする。
3. t2 - t3 を計算する。演算結果は t4 に入るとしよう。
4. t1 + t4 を計算する。結果は b に代入される。

つまり b をデクリメントした後に演算結果で上書きされるので b の
デクリメント操作は無効となる。

>>979
それは演算子の認識順位を述べているだけで説明としては 20 点。
もっとがんばれ。

984 :デフォルトの名無しさん:2010/04/30(金) 20:26:36
ってことはデクリメントしたいときは、分けて書かないとダメのなのか

985 :デフォルトの名無しさん:2010/04/30(金) 20:28:11
2 と 3 は逆だったかもしれない。まぁ結果は同じだが。
インクリメント演算はロード/ストアが発行されない分効率は良いんだが、
他の混在させるとこういうややこしい事になるので混ぜない方が良い。

986 :デフォルトの名無しさん:2010/04/30(金) 21:27:49
ちなみに a += --a + a--; も a-- の評価順序が低いというだけではなくて、
上記のような結果の上書きが発生する。説明は省略するので宿題だ。
javap の結果をよく見て考えれ。

これを演算子の認識と評価の優先順位問題と見た奴は即死。
>>969 あたりは本当は結果に対して説明ができなくなって諦めたんじゃないか?w

987 :デフォルトの名無しさん:2010/04/30(金) 21:40:20
>>977
4バイト確保されてメモリ使用量の変動しない>>956が、一般的に正しい
状態だと思いますが、>>956と同様の検証コードを以ってしてもKVM環境では
値によってメモリ使用量が変動してしまうため、その原因を調べています。

>>960のi=100の例の様に、専用の命令が用意されている-1〜5以外の
値を代入した場合でも0や2147483647やそれ以外の場合と同様に
メモリ使用量が微妙に違ってきてるのです。

>>973
まず疑わしいのは自分のソースだろう、とあたりを付けてはいるのですが
int型以外のケースでもテストを重ねるほど、KVMの仕様を疑いたくなるほど
メモリ使用量に関して腑に落ちない点が出てきます…
単なるテストコードの間違いであってくれれば話は早いのですが。

一人で書き込みすぎるのもあれなので、色々と調べ直してみたいと思います。
ヒントを頂けるかも知れないので、スレはもうしばらく見学させて頂きます。
レスして下さった方々ありがとうございました。

988 :デフォルトの名無しさん:2010/04/30(金) 21:56:28
>>987
そのレベルで調べたいんならKVM解析するしか無いよ

989 :デフォルトの名無しさん:2010/04/30(金) 21:58:45
KVM ってそんなメモリ管理まで仕様になってんの?
単なる実装依存じゃね?

990 :デフォルトの名無しさん:2010/04/30(金) 22:01:37
>>986
ここは質問スレだぞ
口はさめるほど知ってるなら説明してやれよw
おれはj2meなんかさわったことないし知らんけど



991 :デフォルトの名無しさん:2010/04/30(金) 22:16:41
>>987
実行時のメモリ割り当てなんて、コンパイラやらロケーターやらVMやら色々なプログラムが絡むから
全てを明らかにしたいなら、今使ってるバージョンのソフトを全て逆アセンブルでもして、
それぞれの動きを完全に把握する必要があると思うよ。

逆に聞きたいんだが、なんでそんなことが気になるわけ?
Javaなんて抽象度の高い半インタプリタ言語でプログラム作ってる人が
気にするようなことじゃないと思うんだが、それでなんか不具合でも発生してるの?

992 :デフォルトの名無しさん:2010/04/30(金) 22:17:53
顔真っ赤にして何言ってんだか。KVM の方の話とごっちゃにすんなよ。

993 :977:2010/04/30(金) 22:44:14
>>987
>4バイト確保されてメモリ使用量の変動しない>>956が、一般的に正しい
ん〜、i=2147483647の時は4バイト確保されるけど、i=0の時はメモリ確保されないので
メモリ使用量に違いが出るって言ったつもりなんだけど、僕の言ってること理解出来てます?
iconst_0 とldc1 ではメモリの使用量が違う。
でも、それでメモリの残り容量にどう影響が出るかは、4バイトの使用量の差があっても、
アライメントによっては同じサイズに整合されるかもしれないし。
他の方も言ってる通り、結局は実装依存だと思いますよ。

994 :987:2010/04/30(金) 22:57:59
>>991
不具合とかは無いですが好奇心です
>>993
なるほど、今度は良くわかりました
その線の様な気がしてきました
貴重な回答ありがとうございます。

995 :デフォルトの名無しさん:2010/04/30(金) 22:58:03
実際のプログラムには関係ないんだが、エビーマーレみたいな名前の単語ってある?
誰かに聞いたことあるんだが思い出せなくて

996 :デフォルトの名無しさん:2010/04/30(金) 23:06:59
エディーマーフィ の検索結果 約 227,000 件中 1 - 10 件

997 :デフォルトの名無しさん:2010/04/30(金) 23:07:51
エルカンターレ の検索結果 約 154,000 件中 1 - 10 件目 (0.32 秒)

998 :デフォルトの名無しさん:2010/04/30(金) 23:14:50
次スレはどうした?w

999 :デフォルトの名無しさん:2010/04/30(金) 23:15:43
エビマヨネーズ の検索結果 約 1,360,000 件中 1 - 100 件目 (0.47 秒)

1000 :デフォルトの名無しさん:2010/04/30(金) 23:16:04
もう語ることなど無い

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

296 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)