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

このエントリーをはてなブックマークに追加
>>47 そういう話なら種類もへったくれも無く、Eclipse.org
謹製の専用コンパイラで切替不可能。まあインクリメンタル
コンパイル切ってantでjavacやってもいいけど。
>>48
Window -> Preferences -> Java -> インストール済みのJRE
で使うコンパイラ切り替えられるけど、そういうことじゃなくって?
>>49
それは文字通りJREを切り替えているだけ。具体的にはコンパイル時
に参照する標準APIのライブラリの切替と、アプリケーション実行時
に使うVMを選択しているだけ。コンパイラはあくまでもeclipseに
添付されているものが使われる。つーか、いちどJava2SDKを
アンインストールしてコンパイルしてみると良く理解できる。
SDKないのにコンパイルできるから。
5143:04/08/25 10:45
どうもありがとうございます。

いろいろ、調べてみるとjavaというのはコンパイラによって演算速度や
最適化による速度の向上の仕方などが全然違うということがわかりました。
それで、実際に最適化を行ううえで自分が使っているコンパイラの種類を
把握しておかないといけないと思ったわけです。
Sun、IBM、BEAあたりですね‥。

で結局eclipse上でjavaを動かす場合はeclipse専用コンパイラである
Eclipse.org?を使うしかできないのでしょうか?

そのEclipse.orgというのは、IBMやSUNなどのコンパイラと比べてどういう性能を
もっているのでしょうか?そういうことが詳しく書かれてるサイトがあれば
紹介していただけないでしょうか?
>>51
速度の観点からEclipse Java コンパイラと他のコンパイラを
比較した例はすまんが私は知らない。
ただしどれくらいJava2の仕様にあっているかをテスト(JACKS)して
比較した結果なら見たことある。ぐぐれば出てくるかな。
かなり昔の結果だから今の系にあてはまらないとは思うけど
若干Sunのjavacに比べてミスが多かったと記憶してる。
あと、ついこの前J2MEスレで吐き出されるクラスファイルが
デバッグ情報を全部オフにしても若干大きいという書き込みがあった。
連投ごめん。忘れてた。
>で結局eclipse上でjavaを動かす場合はeclipse専用コンパイラである
>Eclipse.org?を使うしかできないのでしょうか?
上でも書いたけど、ビルド中に行われる
コンパイルをantスクリプトに差し替えられるので
そのなかでjavacすればかえられるんじゃないの?


>>50
ほうほう。確かにJREだもんコンパイラ関係ないね。
実行・デバッグ時に使うくらいか。

>>51
実行環境側ではBEAのJRockitが速いというのをどこかで見た記憶がある。
JavaのStringに
Cで言うsprintf、MFCだとCString::Format
("%04d"見たいな書式)
やりたいんですが
ありますか?
>>56
java.text.DecimalFormatがお望みのものかと。
ttp://www2s.biglobe.ne.jp/~yuuki_ki/java_number3.htm
>>51
今のJavaって実行時コンパイルによる最適化の割合が
かなり高いと思うから、コンパイラだけじゃなくてVMの
ほうも調べたほうがいいと思うけどね。
>>56
Tiger(J2SE 5.0)ならprintfもある。
>>43
Eclipseの内蔵コンパイラは開発中の自動コンパイル用だと認識していい。
プロダクトとして出すものはantか何かで外部のお好みのコンパイラを
使って作ればいい。
コンパイラに関していつも思うのだけれど
Win用SDKのjavacでコンパイルしてLinux上で実行するのと
Linux用SDKのjavacでコンパイルしてLinux上で実行するのと
速度などなど変わるのでしょうか
>>62
javacはJavaVM上で実行されたようにおもう。
記憶があやふやなので、各自確認してね。
JavaVMの上で実行されるのなら、
生成されるclassファイルは基本的に同じものになるとおもう。
>>51
> いろいろ、調べてみるとjavaというのはコンパイラによって演算速度や
> 最適化による速度の向上の仕方などが全然違うということがわかりました。
どこを調べたんだろ?
jspからのSQL問い合わせって、*しかダメですか?
select TO_CHAR(aaa,'yyyy') from test
って書くと、結果が取得できませんが…
select * from test
は通るんですがね
6665:04/08/25 16:05
>>65
すみません自己解決シマスタ
カラム名の別名が微妙に違ってマスタ
逝ってきます
C言語で言うところのマクロ機能を実現するツールのようなものはご存じないでしょうか?

とりあえずDebugWriteを埋め込んでコンソール確認しているのですが、
実際に利用する際にはその部分をコメント化したいので
#ifdef 見たいなものがあればうれしいのです。
>>62-63 コンパイラ本体はSDK中のtools.jarの中にあるね。
>>67
マクロとはアプローチが違うけど、そんなあなたにCommons logging & log4j
ttp://www.atmarkit.co.jp/fjava/rensai2/jakarta09/jakarta09.html
リリース時にログのレベルを変えてログを出力しないようにすれば解決。

あと、デバッグメッセージは開発中にしか使わないのであればこんなのも。
ttp://www.csg.is.titech.ac.jp/~usui/bugdel/
学士論文の成果物だって。面白いねこれ。
>>62-63
さらに言えば、JBuilder, eclipse, NetBeensなどの
JavaVM上で動く統合環境を使う利点の一つも、そこにあったとおもう。

javac自体がJavaプログラムであるし、コンパイルが終ればJavaVMも終了してしまうので、
コンパイルのたびにJavaVMを起動しなければならない。

現在のJavaのネックは、VMの起動に時間がかかることなので、このロスは大きい。
しかしJavaVMを一度起動すれば、
JavaVMを終了させずに全ての処理を行い続ける統合開発環境には、そのロスがない。

もっとも最近のパソコンなら、javacを起動させても、
JavaVMの起動時間を意識することもあまりないけどね。
>>67
これは?
JavaでHello World アサーション編
ttp://www.hellohiro.com/assertion.htm
>>71
アサーションは失敗するとAssertionError発生するからな・・・
catchしないとスレッド止まるし、用途が違うと思う。
>>70
ついさっきまでエクリプスはjavacつかわんって話してたばかりなんだが…
>>73
だからJavac使うよりコンパイル速いよってことでしょ?
75デフォルトの名無しさん:04/08/25 17:58
OSはwindows98なのですが、hoge.javaを読み込めないとエラーがでます。
PATHもちゃんと設定したのですが…
なぜでしょう?
>>75
何をしようとしてるんだ?
Javadocでも作るのか?
77デフォルトの名無しさん:04/08/25 18:09
>>75
いや、簡単なプログラムをコンパイルしたいのです。
C:\hoge>javac hoge.java
エラー: hoge.java を読みk(ry
78デフォルトの名無しさん:04/08/25 18:10
77は>>76のレス
orz
>>75
>OSはwindows98なのですが、hoge.javaを読み込めないとエラーがでます。
そのhoge.javaを読み込むために、>>75が何をしたのか、
たとえばどういうコマンドをどこに入力したかなどを書いたほうがいいとおもう。
>>75
もちろんhoge.javaのあるディレクトリに移動済み、
もしくはフルパスでhoge.javaを指定してるんだよな?
>>78
そこにほんとうにhoge.javaというファイルがあるのか確認したほうがいいとおもわれ。
hoge.javaのかわりに、hoge.java.txtというファイルがあったり、ちがうディレクトリにいるとおもわれ。
>>74
既に起動してる VM から tools.jar の com.sun.tools.javac.Main 実行すれば速いとかそーゆー話?
83デフォルトの名無しさん:04/08/25 18:15
>>81
hoge.java.txtになっていました。
どうやったらjavaファイルになりますか?
>>82
だと思うけど
Ω ΩΩ <な、なんだってー
86デフォルトの名無しさん:04/08/25 18:29
>>83
色々いじってみましたが、もう無理です。
hoge.java.txt を hoge.javaにする方法を教えて下さい。
お願いします。
>>86
コマンドプロンプトで
rename hoge.java.txt hoge.java


ネタで書いてるのなら
2ch来ない方がいいよ。
>>86
それはもうJavaの質問じゃないから、ここのスレの人たちには答えられないと思うよ?
初心者スレとか行ってみたら?
8986:04/08/25 18:41
すいません。ご迷惑をおかけしました。
>74
間違えた、エクリプスはsdkのコンパイラはつかわず独自の内蔵コンパイラ使うっ
て話をしてた。
>>89
つい先日同じ間違いをやらかした折れには他人事と思えん…
折れもがんがるから、おまいもがんがってくれ
92デフォルトの名無しさん:04/08/25 21:55
Java1.3.?のころと今Javaで文法上で変わったところはありますか?
ありがとう
95cygwinが大嫌い。:04/08/26 01:56
Java製Cコンパイラが欲しいのですが、既存のもので何かありますでしょうか?
あと、Java製のシェルなんてのも探してます。
散々調べてみたのですが、それらしきものが見つかりませんでした。

無ければ、つくります。
96デフォルトの名無しさん:04/08/26 02:00
JPanelの上にJComponentを重ねようとしてもコンポーネントが描写
されないのですがどのような原因が考えられるでしょうか?
>>96
repaint() はしてますか?
>>96
JPanelがJComponentの描画を阻害してる。
>>95
できたyo!!

public class jcc{
public static void main(String[] args){
try{
java.lang.Runtime.getRuntime().exec("gcc "+args[0]);
}catch(Exception e){}
}
}
100デフォルトの名無しさん:04/08/26 02:30
>>97
はい、残念ながらしてました。
>>98
対処方法は何かありますか?
101cygwinが大嫌い。:04/08/26 02:40
>>99
それは既存のgccを、Javaという手段を使って呼び出しているに過ぎないではないですか。
自分の欲しいものは、そのgccの内部で行われる処理をやってくれるJavaのクラスなのです。

と、ネタにマジレス。
102名前は開発中のものです。:04/08/26 03:16
javaはマルチプラットホームだけど、
JAVAで動くCの対象の機種はなんなの?
それが決まらなきゃコード吐けないジャン。
きっとCのソースを動かしたいだけなんだろ?
細かい事はなーんも考えてないんだろ?
104デフォルトの名無しさん:04/08/26 03:35
>>102
ネタにマジレスイクナイ!
105デフォルトの名無しさん:04/08/26 03:41
>>99
引数が1個しか取れない
Java厨ってほんとアフォだな。
>>95
BeanShell?
107デフォルトの名無しさん:04/08/26 06:48
どうせコンパイラを作れとかいわれた学生だろ?
すなおにJavaCCでぐぐれよ。
もしくは下のスレで聞いてみな。

http://pc5.2ch.net/test/read.cgi/tech/1091647502/
メソッドと,static finalのフィールドだけを定義しようと思った時に、
interfaceの中に作るのと、クラスの中に作るのではどちらが良いのでしょうか?

消費メモリの量、処理のスピードが両者で違ったりしますか?
109ゲッツ:04/08/26 10:53
質問させてください。
現在、Strutsを用い、JNDI接続という方法を使って
参考:http://www.atmarkit.co.jp/fjava/javatips/004container003.html
ODBCと接続し、MDBに入っているデータ一覧を表示するプログラムを組んでいるのですが、
DBにConnectするところで落ちてしまいます。

デバッグを行うと:
javaURLContextFactory.<init>() 行: 49 のソースが見つかりませんでした。
と表示されます。
Context ctx=new InitialContext();  ←ここで落ちる
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
db=ds.getConnection();

何が考えられるのでしょうか?
宜しくお願いします。
>>108
抽象クラスとインターフェースはそんなことでどっちを選ぶかなんてものではないぞ
>>109
StrutsかDBの設定がまずいんじゃねーの
112ゲッツ:04/08/26 11:18
TomcatのServer.xmlのコンテキストに
<Resource name="jdbc/TestDB" auth="Container"
type="javax.sql.DataSource" debug="1" />
<ResourceParams name="jdbc/TestDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>sun.jdbc.odbc.JdbcOdbcDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/wings?user=root&password=root&useUnicode=true&characterEncoding=Windows-31J</value>
</parameter>
</ResourceParams>
を追記し、アプリケーションのWeb.xmlに
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
を追記したのですが。
それで、管理ツールのデータソース(ODBC)にID:root、パス:rootで設定したのですが。
113ゲッツ:04/08/26 11:20
> 111
Strutsとかの設定ファイルがおかしかったら、Tomcat起動時にエラーが起きますよね?
それか実行したときにインスタンスエラーとかに・・
>>113
そうとも限らん。
自分で正しいと思ってるところでも、見直すと間違いが見つかることもあるぞ。
115デフォルトの名無しさん:04/08/26 11:35
JPanelを継承したクラスにpaint()メソッドを付けたらパネルにメニューバーくっついてきたり、
設定した背景色が無視されたりしちゃうんですけど。paint()メソッドの使い方を間違えているのでしょか?
ちなみにメソッドの中は特に何も書かなくても同じ現象がおきます。
116115:04/08/26 11:36
メニューバーはパネルを置くJFrameのやつです。
117ゲッツ:04/08/26 11:51
>> 114
Eclipseのコンソールに
こんなんが出たのですが・・・
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'sun.jdbc.odbc.JdbcOdbcDriver' for connect URL 'jdbc:mysql://localhost/wings?user=root&password=root&useUnicode=true&characterEncoding=Windows-31J', cause:
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(Unknown Source)
これってドライバーがないというエラーなのでしょうか?

ちなに今いじった箇所はODBCのドライバをMicrosoft Access Driver⇒Driver do Microsoft Access
に変更してみたのですが・・・

環境も書きますと
Tomcat5.0
Eclipse3.0
JDK1.4.2
Struts1.0
です。
>>117
なんでMySQLにつなごうとしてるのにJDBC-ODBCドライバなんて使ってるんだ?
俺はMySQLとODBCドライバには詳しく無いが、それでいけるのか?
>>115
>>29あたりにも指摘があるが、JPanelならpaint()よりも、
paintComponent()メソッドを使ったほうがいいと思う。

ただ、詳しいことがわからないのでなんともいえないけれど、
paint()メソッドの処理を、paintComponent()に置き換えるだけでは問題は解決しない予感。
120デフォルトの名無しさん:04/08/26 12:39
パネルの上にコンポーネントを乗せたあと、パネルに線を描くとき、
その線がコンポーネント上にあった場合線がそのコンポーネントの上に描かれてしまうのですが
これを回避する方法はあるでしょうか?
いつでもそのコンポーネントが上にくる感じにしたいのですが・・・
121115:04/08/26 12:40
>>119
解決しました。ありがとう!
122ゲッツ:04/08/26 12:41
>>118
ですよね・・・私も疑問に思っていたのですが・・・
ODBCに接続するように変更したら、DBに接続がうまくできました!!
ですが、ページにアクセスすると以下のエラーが・・・
The server encountered an internal error () that prevented it from fulfilling this request.
javax.servlet.ServletException: No getter method for property ADDRESS of bean bookInfo
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
これはどういうエラーなのでしょうか?
bean関係のエラーですよね?ってことは値の受け渡しのところでしょうか?
これは
http://localhost:8080/***/***.do
とアクセスするとDBに接続し、一覧を表示するだけのもなので、リクエストなど、渡す引数等はないのですが・・・
何度も質問で申し訳ありませんがお願いします。あともう一息だと思うのですが・・・
>>122
Strutsコンフィグ見直せ。
Form使ってねーのにForm設定してあるだろ。
124ゲッツ:04/08/26 13:28
>>123
レスありがとうございます。

見直したところ、
<form-beans>
に設定をしていたので、はずしたのですが、動きませんでした。

ストラッツコンフィグには
<action-mappings>

<action path="/View" type="test.BookViewProcess">
<forward name="success" path="/ItiranView.jsp" />
</action>
しか記述していません。

他に何が原因が考えられるでしょうか?
125ゲッツ:04/08/26 13:35
補足です。
同じエラーです。
>>124
じゃあ、JSPとJSP側で使ってるクラス。
JSP側のStrutsのタグのpropertyとクラスのgetterメソッドの名前が違ってる。
127ゲッツ:04/08/26 13:46
>>126
>JSP側のStrutsのタグのpropertyとクラスのgetterメソッドの名前が違ってる。
を見直したところできました!!!!

本当に本当にありがとうございました。
まだまだ勉強が足りません・・
これをベースに色々勉強したいと思います。

ありがとうございました。
>>127
よく頑張った。感動した。
今後はエラー内容をよく読み、自分で解決できるようになれるよう精進するがいい。
あと、エラーでぐぐったりもしようね。
>>120
たぶんJPanelの上のコンポーネントが透明なのだと思う。
透明だから、コンポーネントの下のJPanelが透けて見えているのでは。

これを解決するためには、コンポーネントを不透明にすればいいので、
そのコンポーネントからsetOpaque(true)メソッドを呼び出せばいいと思う。

>>120-121
GUIについては、まだ落し穴がいっぱいあるので、
二人とも、こことかを見ておいたほうがいいとおもう。
How Swing Components Are Displayed
http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts.html
遅レス失礼

>69、>71

ありがとうございます。
本番では、バイトコードを削りたいので>69様のプラグインがアタリです。

( ´-`).。o(問題はEclipse使ってないんだよなぁ・・・
131デフォルトの名無しさん:04/08/26 16:04
javaVMの古いバージョンが欲しいのですが何処かにありませんか?
132デフォルトの名無しさん:04/08/26 16:12
現在の時刻を14桁の文字列で取得したいのですが
8月などだと「8」で返ってきてしまうのです
これを08などで取得するのはどうやればいいんでしょうか。
現在は「200482616152」のように帰ってきてます。

Calendar cal1;

cal1 = Calendar.getInstance( );
int year = cal1.get(Calendar.YEAR);
int month = cal1.get(Calendar.MONTH) + 1;
int day = cal1.get(Calendar.DATE);
int hour = cal1.get(Calendar.HOUR_OF_DAY);
int minute = cal1.get(Calendar.MINUTE);
int second = cal1.get(Calendar.SECOND);

System.out.println(year +""+ month +""+ day +""+ hour +""+ minute +""+ second);

>>132
SimpleDateFormatでも使え
134デフォルトの名無しさん:04/08/26 16:21
>>133
レスありがとうございます

そのようにしようと思ってたのですが

import java.text.SimpleDateFormat;

がビルド通りませんです、、、

ちなみに
SimpleDateFormat sdf

もエラー出てしまいます。
>>134
Javaのバージョンと環境は?
136デフォルトの名無しさん:04/08/26 16:31
>>135
う、そ、それは、、、

j2sdk1.4.2_04



MIDP(iAppli)です・・・・

スレ違いですいません、MIDPじゃ出来ないんでしょうか。。
137デフォルトの名無しさん:04/08/26 16:34
あ、すいません

j2sdkじゃなくてj2meでした。。。
>>136
できないならJ2MEに入ってないんだろ。あきらめろ。
>>136
ttp://jcp.org/aboutJava/communityprocess/final/jsr118/index.html
ここにある仕様書DLしろ。
中にJavadocあるから、どのクラスが使えるかわかるだろ。
140デフォルトの名無しさん:04/08/26 16:45
>>138
すいません、ありがとうございました
メソッド作って無理やり0くっつけるようにします。
お手数おかけしました。

>>139
ありがとうございます
simpleDateFormatは使えないみたいですね。。。
調べてから質問するようにします、ご迷惑おかけしました。
141デフォルトの名無しさん:04/08/26 17:12
Enumerationについてよく分からないんですが、このインターフェースは
配列と同じような物と見なしたらいいのでしょうか?
似たようなのにVectorってのもあるし…
>>141
Enumerationは数え上げ用のインタフェースよ。
VectorやHashtableなんかに入ってるオブジェクトどもを一個一個順番に取り出したいときとかに使う。
同じ様なインタフェースでIteratorってのもある。
ttp://www.forexwatcher.com/quotes.htm
こういったJAVAで処理してるページから数字を取得する方法ないですか?
一般的なwebページだとhtmlのソースからで何とかなりそうなんですが。
>>141
java.util.Enumeration は java.util.Iterator の古い奴ね。
>>131
ここからさがせ。
ttp://java.sun.com/products/archive/
>>136 iappliはMIDPじゃねー。
zipファイルにパスワードを設定するプログラムを作りたいのですが、何か良い方法は無いでしょうか。
148デフォルトの名無しさん:04/08/26 19:09
教えてください。
JDBCドライバーを使ったプログラムで、

Class.forName("org.gjt.mm.mysql.Driver"); // MySQLの場合
ってありますが、これってどこにインスタンスが出来るんでしょうか。
クラスローダーとかってJavaDocに書いてありますが、よく理解出来ません。

また、この後、
(中略)
ResultSet rs = stmt.executeQuery(sql);

ResultSet rs = stmt.executeQuery(sql);
// 検索された行数分ループ
while(rs.next()){
// NOを取得
int no = rs.getInt("NO");
// 言語を取得
String lang = rs.getString("LANGUAGE");
// メッセージを取得
String msg = rs.getString("MESSAGE");
// 表示
System.out.println(no + " " + lang + " " + msg);
}

と書くサンプルがあるんですが、ResultSetってインターフェースですよね。
でもインターフェースの意味を調べると、「実装のないメソッドが存在している」とあります。
実装のないメソッドがないのに、どうしてインターフェースのメソッドが叩けるのでしょうか。
どなたかエロい人、教えてください。
うふふふ、初々しいね。お姉さんが教えてあげようか?
150デフォルトの名無しさん:04/08/26 19:17
AWTとSWTはどちらの動作の方が軽いでしょうか?
釣られてたまるか。
>>どなたかエロい人、教えてください
ぐぼげほあはぁうえがはいえろえろ

>>これってどこにインスタンスが出来るんでしょうか。
ヒープ領域にDriverクラスのClass型インスタンスが出来るぐぼへほはぁえろえろ。

>>どうしてインターフェースのメソッドが叩けるのでしょうか。
executeQuery(sql)が返してるのは、ResultSetを実装したインスタンス
であり、型がResultSetなだけなんでぐぼへほはぁえろえろ
153デフォルトの名無しさん:04/08/26 19:44
netbeansはSwingで書かれてるんですか?
いい加減にしなさい。これ以上やるとただじゃおかないぞ。
155145:04/08/26 20:17
>>152
ありがとうございます。

> >>これってどこにインスタンスが出来るんでしょうか。
> ヒープ領域にDriverクラスのClass型インスタンスが出来るぐぼへほはぁえろえろ。

うーむ、私の脳味噌では理解不能。




>>どうしてインターフェースのメソッドが叩けるのでしょうか。
> executeQuery(sql)が返してるのは、ResultSetを実装したインスタンス
> であり、型がResultSetなだけなんでぐぼへほはぁえろえろ
そのインスタンスの元のクラスって何でしょうか?
156デフォルトの名無しさん:04/08/26 20:22
>>155
ResultSetインタフェースを実装したクラス。
JDBCドライバごとに違う。
ConnectionもStatementもすべてドライバごとに違うよ。
157145:04/08/26 20:42
>>156
へー。つまり
Class.forName("org.gjt.mm.mysql.Driver");
であれば、このDriverのインスタンスが

Connection con も
Statement stmt も
ResultSet rs も
このドライバークラスから来たんですか。
これって目で確かめる方法ってあるんでしょうか?
質問厨でスマソ。
目で確かめる方法


Class.forName("org.gjt.mm.mysql.Driver");

を探す
159デフォルトの名無しさん:04/08/26 20:50
>>157
Class.forNameは、下記のとは別。
それはある種類のドライバーをクラスをロードして、その種類のドライバーを
使用可能にする為だ。

ResultSet rs のインスタンスはそのインタフェースの動作ルールに
基づいて、その使用ドライバーが作成したオリジナルインスタンスだ。
確かめたいのならrs.getClsaa().getName()とすれば、そのドライバーの
オリジナルインスタンスのクラス名が出る。
160153:04/08/26 20:56
>>154
真面目な質問なんですが。
誰か分かる方いませんか?
161デフォルトの名無しさん:04/08/26 21:51
>>160
VisualBasic.NETで書かれています。
162デフォルトの名無しさん:04/08/26 23:21
ahoka
163swテー:04/08/26 23:27
swtで作ったアプリで選択したJDBCのversion情報を出力しようと思ってます

jdbcはClass.forName("ドライバ名")でインスタンス化できることはわかるんですが
そこで動的にclasspathを設定してやる必要があります
アプリケーションを中断せずに変更する方法はありませんか?

ちなみにSystem.getProperties()やsetProperties()でkey=java.class.path
にフルパス(ドライブ名から.jarまで)を設定してあげると、表示では変わったことになりますが、
実際にはパスは通ってないのかClass.forName("ドライバ名")でClassNotFoundExceptionが発生します
同じフルパスを実行時に-classpathで設定するとうまく行きますが実行中に行いたいです。

現在は選択されたドライバのフルパスを保存して動的にバッチファイルを生成、実行し
選択画面と処理画面を二つに分けていますが(二つのアプリケーションにしている)一画面で行いたいです。

Eclipseで環境変数を追加することができるなら方法はあると思うのですがわかりませんでした
どなたかわかる方いましたら教えてください
164デフォルトの名無しさん:04/08/26 23:35
>>163
URLClassLoader使えば簡単だよ。
java初心者です。とりあえず手始めにエロゲーを作っています(w

とりあえず、
abstract Opai とabstract Manko
クラスを作りました。

それらを継承して、BigOpai , FixedMankoクラスを作ってそれぞれPeroperoListenerを実装して
LoliWomanBodyクラスに委譲したのですが、おっぱいを舐めた時のリスナーイベントの挙動がうまくいきません。
何故かおっぱいを舐めてもMankoクラスも反応してしましまいます。

なにかいい解決方法を教えてください。必要ならばソースもうpします。
166デフォルトの名無しさん:04/08/26 23:39
ソースはいいからまず画像うpしる
話はそれからだ
167swテー:04/08/26 23:39
>>164
やってみます
ありがとうございます。
>>166
画像ですか?java3Dでまだガクガクのポリゴンでダサいんですが・・。
マンコがBODYから浮き上がってますし。
169デフォルトの名無しさん:04/08/26 23:54
>>166
萌え要素がない奴は却下
170165:04/08/26 23:59
Strategyパターンを使っていますので、将来的に萌えにも対応できる設計です。
swingみたいにlook&feelだけ萌えに出来る予定です・・。
>>157
とりあえずお前は148な
172トリビアの伊豆見:04/08/27 01:16
>>155

JDBCドライバでおまじないのようにClass.forName()しなきゃいけないのは、

単にDriver実装クラスのクラスイニシャライザがDriverManager#registerDriver(Driver)
を呼び出しているから、というだけの話。

別のタイミングで同じ事をするようにすれば、Class#forName()を呼ぶ必要はない、
って知ってた?
173デフォルトの名無しさん:04/08/27 06:39
こんにちは

JTableのsetRowWidthを呼び出しても、行の幅(高さ)がかわりません
なにか他のAPIも呼び出す必要があるのでしょうか?
174173:04/08/27 08:38
修正します

Windows2000でsetRowHeightを呼び出すと、行の高さが変わるのですが、
WindowsXPでsetRowHeightを呼び出しても、うまく機能してくれません。

このような不具合ってあるのでしょうか?
175141:04/08/27 08:49
>>142>>144
レスサンクスです。
なるほど、あくまで連続した要素を取り出すためだけの
インターフェースなんですね。どうも有難うございました。
JFrameのサイズに関して質問があります。
オセロのような格子を描画するアプリケーションを作ろうとしてます。
JPanelを用意してpaintComponent()に50X50ピクセルの四角形を(0,0)を基点にして
8X8描くようにしてます。
またアプリケーション本体としてJFrameのcontentPaneにJPanelをはりつけました。
このとき、JFrameの大きさをsetSize()で400X400(パネルが50X50ピクセルで8X8だから)
にしたのですが、格子全体が表示されません。いつも420X420くらいにしないと全体
を表示できません。
JFrameの大きさをパネル全体が描画できるようにするにはどのように設定すれば
よいでしょうか。
177デフォルトの名無しさん:04/08/27 11:32
すんません、漠然とした質問をさせて頂きます。
サーブレットに関してなんですが、アクセスしてきたのがPCか携帯かによって
ページを振り分けるにはどのようにしたらよいのでしょうか?
ヒントだけでも結構ですのでどなたか宜しくお願いします。
>>177
ヘッダーのブラウザ見て振り分けれ
>>177
request.getHeader("User-Agent")
request.getRemoteAddr()
request.getRemoteHost()
180177:04/08/27 11:49
>>178,179
レスどもです。

自分もどっかに参考になるのはないかなぁって色々探してるんですけど
下のページの内容とかは使えそうですかね?

http://interstage.fujitsu.com/jp/technical/tips/tip000033_03.html
http://msugai.fc2web.com/java/servlet/dispatchForward.html
http://msugai.fc2web.com/java/servlet/sendRedirect.html
>>180
資料くらい自分で読んで精査しろや
javaアプレット作りました。

appletviewerだと見れるのに
ブラウザじゃ見れません。

環境はこんなです

test.html < ここにアプレット起動かいてる。
test.class
lib/test.classで使用しているclassが少々
img/test.classで使用しているgifが少々

appletviewer test.html だと起動します。
test.html(httpdでサーバとして立ち上げて実行しても)
IEの下のバーに。
class test not found
いわれます。

appletの矩形領域は灰色表示されています。
何が悪いんでしょうか?
183177:04/08/27 13:29
>>181
(´・ω・`)ショボーン はい、がんばります…
184182:04/08/27 13:33
自己解決
ttp://www.horae.dti.ne.jp/~yoji/TamaJava/faq.html

Sunは、1997年にMicrosoftが契約に反してJavaの一部を許可なく改変しているとして訴訟を起こしました。その後、和解しましたがMicrosoftは自社製品で最新版のJava技術を使用するライセンスを失いました。
Microsoftは、古いバージョンのJavaを使い続けることは認められていますが、 Windows XPの発売前にMicrosoftはJavaVMソフトウェアをWindows XPと Internet Explorer(IE)から削除することを決定しました。


JAVAアプレットだめぽ
185デフォルトの名無しさん:04/08/27 14:15
あるイベントを指定した時間だけ実行させたいのですが
そんなメソッドってあるのでしょか?
スレッドとスリープ使えばできるだろ
187デフォルトの名無しさん:04/08/27 14:32
>>186
指定した時間停止するのではなく3秒間だけ実行という感じにしたいのですが
それでできるのですか?
>>187
別スレッド起動して、3秒スリープさせて、スリープ終了後にnotifyで知らせてもらったらどうか
189デフォルトの名無しさん:04/08/27 15:10
SwingでJPanelの背景を画像にすることってできないんでしょうか?
>>184
それは古い情報ではないだろうか。
結局、色々あったすえにWinodwsXPにも、今はJavaVMがインストールされているかと。
VMがもし入っていないのなら。
class test not foundなどとすらも表示されないのではなかろうか。

>>182のエラーの原因は、1.1.8相応のVMを使用するように設定されたブラウザで、
1.4用のアプレットを実行したせいではなかろうか。

targetオプションを使ってみては?
191184:04/08/27 15:31
追記:
javac -target 1.1 *.java
で、MSのブラウザ対応形式でコンパイルできる。
ヨカター
192184=191:04/08/27 15:32
うおっ
レス見ずに書いちゃった。
>>190さんのとおり
193189:04/08/27 15:42
レスお願いします
>>190
> 結局、色々あったすえにWinodwsXPにも、今はJavaVMがインストールされているかと。
これはダウト。

セキュリティ修正のために、MSJVM がインストールされている場合のみ修正版がダウンロードできる。
Microsoftのサイトから新規に MSJVM をダウンロードするのは無理。
WindowsXP のパッケージには MSJVM は入ってないし、
プリインストールPC も Sun の JVM 入れてるほうが多いと思われ。
195190:04/08/27 16:01
>>194
ありがとう。
俺、SUNがマイクロソフトと和解して
お互いに協力しあうことになったというニュースを勘違いしてたっぽい。

>>189
JPanelのサブクラスを作ればできるのではなかろうか。
paintComponentを上書きすればいいのではないだろうか。

このところSwingの質問が多いけど流行ってるの?
それとも全部同じひとが質問してるの?
>>189
JLabel使えばいいんじゃないの?
Inteface/Implementsについて、
JavaFAQとかも見てみたんだけど、
いまひとつメリットが理解しきれない。
DQNにもわかるような解説のあるサイト、ないですか?
>>197
サイトは知らないが、java.utilのソースを見てみたらいいかも。
Collection関連ね。
199189:04/08/27 16:45
>>195
なんか難しそうだけどやってみる
サンクス
>>174
俺XPだけど普通に動いてるよ

>>176
pack使え
各コンポーネントが収まるサイズを計算してフレームのサイズが決まってくれる
その際各コンポーネントには推奨サイズを設定すること

ついでにいえば格子ならJTable使った方がらくかもしれんが
初心者には勧めにくいか
>>195
以下のサイトでも参照してくれ。
http://support.microsoft.com/default.aspx?scid=fh;JA;lifean12
public static void doStaticMethod(){
}

みたいな感じで定義するstaticメソッドを使う際、
クラス名.doStaticMethod()
と呼び出しますけど、staticメソッドというのは、
インスタンスが1つのみってことなんですか?
いや、インスタンスを生成可能なクラス内に
staticメソッドがあるとしたら、
そのクラスのインスタンスを複数作っても、
呼び出されるstaticメソッドは、1つのみってことなんでしょうか?
仮にその場合、並列動作している他の複数スレッドから
同時に呼ばれた場合などは、コンフリクトします?



203デフォルトの名無しさん:04/08/27 17:02
>>202
staticメソッドは、インスタンスとは無関係だよ。
だから、クラス名.メソッド()という呼び方をしても、
インスタンスの入った変数.メソッド()という呼び方をしても
動作は全く変わらん。
staticメソッドの内部でクラス変数を読み書きしている場合は、
同時アクセスでコンフリクトする可能性がある。
>>203
なるほど。ありがとうございました。
ソース書いて試してみます。
205176:04/08/27 17:57
>>200
ありがとございます。

JPanelでsetPreferredSize(400, 400)
して、
JFrameでpack()
したらうまくできました。
206145:04/08/27 20:07
>>172
> >>155
>
> JDBCドライバでおまじないのようにClass.forName()しなきゃいけないのは、
>
> 単にDriver実装クラスのクラスイニシャライザがDriverManager#registerDriver(Driver)
> を呼び出しているから、というだけの話。
>
> 別のタイミングで同じ事をするようにすれば、Class#forName()を呼ぶ必要はない、
> って知ってた?

うーむ、もう少し分り易くおねがいぽ。
207145:04/08/27 20:08
>>206
ついでに言うと、何故普通にnewするんじゃ駄目なのかが分からないぽ。。
208デフォルトの名無しさん:04/08/27 20:20
>>207
JDBC 1.0の糞仕様をいまだにひきずってるだけ。
誰が見ても糞仕様だよ。
209デフォルトの名無しさん:04/08/27 20:34
>>206
DriverManager#registerDriver(Driver)呼べば事足りると思ってる厨がいるみたいだけど、
信用してはいけない。
ドライバの種類によって独自の初期化処理をやってたりするから、
糞仕様でもすなおにClass.forName()使っとけ。
java.util.regexで正規表現を使いたいんですが、
あaびーbしーcでー
という文字列から、あ、びー、しー、でーを取り出すには
どうしたらいいんでしょうか?
あabしーc
など、日本語の部分が無い場合もヒットするようにすると、

Pattern pattern = Pattern.compile(".*a.*b.*c.*");
Matcher matcher = pattern.matcher("あaびーbしーcでー");

でマッチするのは分かるのですが、そこから必要な要素を抽出する
方法がわかりません。どう書けばいいのでしょうか?
Perlだと
$a = $1; $b = $2;
みたいな感じですが…。
211145:04/08/27 21:03
>>208
糞Java本は、何故Class.forName()を使うのか全然書いてない罠。
212デフォルトの名無しさん:04/08/27 21:11
文字列"あaびーbしーcでー" から「あ」「びー」「しー」「でー」を取り出す

Pattern pat=Pattern.compile("[^abcd]+");
Matcher mat=pat.matcher("あaべーbしーcでーd");

ArrayList texts=new ArrayList();
while(mat.find()) {
  texts.add(mat.group());
}

動的配列textsに取り出した文字列が格納される・・・・・
>>212
mat.find()で部分シークエンスを見ていって、mat.group()で一致部分を
取ってくるという事ですよね
それならPattern.compile(".*a.*b.*c.*");とすると、aとかbとかも
一致部分に含まれてしまうから、必要部分だけを抽出することはできない
という事でしょうか?
214212:04/08/27 21:41
>>212
す、すいません。質問の意味がよく分からないのですが・・・・
212は、210で与えられた課題、文字列からあ、べー、しーを取り出すのを
回答したのです。
質問の本質は何なのでしょうか・・・
215デフォルトの名無しさん:04/08/27 21:48
Pattern pattern = Pattern.compile("(.*)a(.*)b(.*)c(.*)");
Matcher matcher = pattern.matcher("あaべーbしーcでー");

if(matcher.matches()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
}
>>215
ああ、凄いそれです
要するに区切り文字で区切られた文字列から必要な要素のみを抽出したかっただけでして
abcだのわけ分からんこと書かなかったら良かったですね

08/27 22:00 ほげ,ひげ,はげ

Pattern pattern = Pattern.compile("^[0-9]+/[0-9]+ [0-9]+:[0-9]+ (.*),(.*),(.*)$");
Matcher matcher = pattern.matcher("08/27 22:00 ほげ,ひげ,はげ");

if(matcher.matches()){
 month = matcher.group(1);
 day = matcher.group(2);
 hour = matcher.group(3);
 min = matcher.group(4);
 hoge = matcher.group(5);
 hige = matcher.group(6);
 hage = matcher.group(7);
}

てな感じで…。これで合ってますよね?
つかgroup()て0じゃなくて1から始まるんですね
どうもありがとうございました
217デフォルトの名無しさん:04/08/27 22:04

ImageIO.read() でbmpファイルが展開できません。
Javaでbmpファイルを表示するにはどうすれば
よいのでしょうか?
>>217
1.4まではbmp標準対応してないです
1.5からは標準で読めるように

ImageIOで少し検索すれば対応フォーマットとかすぐわかるところだろうに

ちなみにbmpを扱う方法はいくつかある
が、この質問レベルから見てたぶん理解は無理
アプレットで表示してある文字は取得できるんですか?
ttp://homepage1.nifty.com/7/
↑こういったページから
「ビギナー向け〜」
と言う文字を取得など
System.out.println(0*0) ;
上記の書き方で実行した場合には
0*0の結果である0がきちんと表示されるのですが、

計算結果を改行して表示させようと上記の1文を、
System.out.println(0*0\n1*1) ;
このようにしたら「¥92は不正な文字です」と言われてしまうのですが、
計算結果を改行表示させる為にはどうしたらよいのでしょうか?


どなたかご教授くださいませんでしょうか…
>>219
なんでそんなことしたいの?

>>220
System.out.println(0*0+"\n"+1*1);
文字列は+で連結
222デフォルトの名無しさん:04/08/28 03:07

こんにちは
現在ホームページを作成していましてアプレットを使用します。
そのアプレットの機能をあまり多くの人に同時に使用されるとサーバーに
負担がかかってしまうため、アプレットの中にスレッドで待ち行列を作ろうと
思っています。
ここで質問なんですが、同時に訪問者が3人アプレットを起動したとして
その待ち行列は機能するのでしょうか?
(複数のブラウザで上記のスレッドは機能するのでしょうか?)
ニヤニヤ
224デフォルトの名無しさん:04/08/28 04:54
msjava.dllが見つかりませんというエラーが出てjavaが起動しなくなりました。
もう一度msjava.dllを入れるにはどうしたら良いでしょうか
>>222
おそらくサーバーへの送受信によって自身の動作を
逐一決めるという「特殊」アプレットを用いてると思われますが
アプレットに待ち行列を作るのではなく、サーバーの方に
作ってください。
>>218
JFC、とりわけ誰もが最初にはじめやすいイメージ関連を理解して
少しお調子に乗ったバカの一つ覚え君が、得意気になって回答してるってのが
ありありとわかるレスだなw
↑なんか突然得意気になって煽ってるバカ
Javaで、「Sat, 28 Aug 2004 00:05:55 GMT」のような日付表現を得たいのですが、
どのクラスで解決できるのでしょうか?

初歩的な質問で申し訳ございませんが、
よろしくお願いいたします。
長さ不明の複数の要素を同時に格納したい時、Javaではどう書くのが一般的なのでしょうか?
例えば以下のPerlコードのような事がやりたい時、Javaではどう実装しますか?

my $foo = "foo";
my $bar = 123.456;
my @hoge = (0, 1, 2, 3); # 長さ固定
my @tako = (0, "a", 1, "b"); #長さが動的に変化する
my %aho = ('key1' => 'var1', 'key2' => 'var2'); #長さが動的に変化する
my @data = ();

push(@data, ($foo, {
 'bar' => $bar,
 'hogeref' => \@hoge,
 'takoref' => \@tako
 'ahoref' => \%aho,
})); # 何回pushされるか不明

$は変数、@は配列、%はハッシュ、\はリファレンス
pushは配列の最後にリストを追加します
動的配列はVector、ハッシュはHashtableで表すのが一般的なのかなぁとは想像できるのですが、
リファレンスと無名ハッシュをJavaではどう書くのかがさっぱりわからないのです。
231デフォルトの名無しさん:04/08/28 10:25
>>230
クラスFooを定義してそれを配列に突っ込め

ArrayList data = new ArrayList();
Foo foo = new Foo(123.456, hoge, tako, aho);
data.add(foo);
232デフォルトの名無しさん:04/08/28 10:41
>>228
SimpleDateFormatを使えばおK

Date d = new Date();
SimpleDateFormat f = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.US);
System.out.println(f.format(d));
>>231
どうもです
リファレンスって使わないんですね
234デフォルトの名無しさん:04/08/28 11:11
>>233
別に配列でもいいけど、
PerlとちがってJavaは型制限がきついからね。
キャストとかかえってめんどう。
>>233
Javaでは、intとかcharとかの基本型以外

すべて

Perlでいうリファレンスです。
>>230
動的配列はArrayList
ハッシュはMap
リファレンスはオブジェクト型の値そのもの
無名ハッシュは
Map $variable = new TreeMap() {
  {
    put("name", "suzuki");
    put("s○x", "male");
    ・
    ・
  }
};
あの、サーブレットが使える有名なレンタルサーバはどこになりますか?
238デフォルトの名無しさん:04/08/28 11:57
みんなの心の中にあります。
238 名前:デフォルトの名無しさん[] 投稿日:04/08/28 11:57
そんなもんしらねーよ
240デフォルトの名無しさん:04/08/28 12:27
元のメソッドにthrowsがないとき
オーバーライドしたメソッドはRuntimeExceptionをthrowできますか?
>>217
>ImageIO.read() でbmpファイルが展開できません。

JAVADOCのJAVA ImageIOの所(C:\j2sdk1.4.2_05\docs\ja\guide\imageio\index.html)
の下の方にJava Advanced Imagingと書かれたリンクがあるからそこから

ttp://java.sun.com/products/java-media/jai/index.jsp
へ飛ぶ。上の方に

Java Advanced Imaging Image I/O Tools 1.0_01-rc is now available.
とあるから更に飛ぶ。すると、

Reader-writer plug-ins are supplied for the BMP, JPEG, JPEG 2000, PNG, PNM, Raw, TIFF, and WBMP image formats.
と有るから、ここからダウンロードしてインストールすればOK
>>240
RuntimeException のサブクラスと Error のサブクラスは全てのメソッドで throw できる。
243デフォルトの名無しさん:04/08/28 13:53
>>242
thanks
じゃあゼロ割のArithmeticExceptionとかも
全てのメソッドでthrowできるってことですね
です。っつかゼロ除算なんて滅多にやらんからすっかり忘れてた。
245219=143:04/08/28 14:34
>>221
143の質問の仕方だと誰も食いついてくれないので・・・
本来の目的は、143の為替の価格
ttp://www.forexwatcher.com/quotes.htm
を取得したいんです。
Yahooファイナンスはhtmlのソースで更新してくれ
取得が容易なんですが更新頻度が目的に満たないので、
アプレットの表示内容を取得する方法を聞いてみました。
出来ませんよね。
>>245
人の作ったアプレットを?
取得できるようにしてあれば取れるけど。
作った人に聞くか解析でもしてみれば。
為替データってどっかでWSDL使ったお試しサービスやってなかったっけか?
248222:04/08/28 16:15

もうひとつ質問させていただきます
アプレットを呼び出す記述をrun()で囲むと(Jsp、Servlet側)、
その記述はアプレットの中でも有効なのでしょうか?
249220:04/08/28 16:45
221さんに書いて頂いたモノで確かにできました。
深夜にありがとうございました。


しかしそこでまた疑問が生まれてしまうのですが、
(1) System.out.println("おはよう。\nこんにちは。\nこんばんは。");
上記の文では「¥n」はただそれだけで改行の役目を果たしているのに(結城本からの引用です)
(2) System.out.println(0*0+"\n"+1*1);
こちらの文ではなぜ「\n」だけで改行をしてくれないのでしょうか?

(1)では""の中に全ての文字列が収まっており、
(2)では\nという改行する為の文字列を間に挟んでいるカタチだから…なんでしょうか?

\nは文字列の中に現れないとダメなの。
>>249
入門書でも読んでから始めたほうが良い
結城本を読んでるみたいだが・・・
253デフォルトの名無しさん:04/08/28 17:03
>>249
¥nは改行を表す文字に対応した表記なのです。
改行は目に見えないので、¥から始まる特別な書き方をして表します。
このような文字をエスケープ文字といい、他にもあります。
文字なので、通常は文字列を表す""中で使われることが多いです。
もちろん、改行文字そのものとして'¥n'として使う場合もあります。
ですので、以下のコードは結果が異なります。

System.out.println(1 + "¥n" + 1);
System.out.println(1 + '¥n' + 1);

わからなければ、入門書へ直行して下さい。
254デフォルトの名無しさん:04/08/28 17:13
ResultSetはインターフェースなのに、メソッドが実相されているのは何故なんでしょうか?
>>249
馬鹿ですか?
自分なりに考えたことと、250さんのカキコで納得がいきました。
253さんの書いて下さった(1+'\n'+1)の実行結果には疑問が残っているので結城本に戻ります。
(後半部分がなぜ2になるのかわかりませんので)

251-253さんありがとうございました。
理由は追求せず先に進んでしまいなさい。そのうち分かる。
258デフォルトの名無しさん:04/08/28 18:07
>(後半部分がなぜ2になるのかわかりませんので)

最初何書いてるか分からなかったぞ、、、
不安になるやっちゃな
それはそうじゃなくて、12がでてるのさ

1+ (改行の文字コードである)10 + 1 = 12
259デフォルトの名無しさん:04/08/28 18:11
>>254
ガイシュツ
>>258さん
文字列が並記されて12に見えるのはない。
ということを説明して下さってありがとうございます。

しかしやはり今はまだ'\n'がなぜ10になるのかがわかりませんので、
257さんが書いて下さったように、とりあえず先にいかせて頂きます。

257さん、258さん有り難うございました。
すみません。
Javaにおける参照渡しと値渡しについて簡潔に説明してもらえませんか?
>>261
Javaには(C++等で言うところの)参照渡しはない。

参照型の値渡しと、プリミティブ型の値渡しがあるのみ。
Javaを始めて10日くらいです。自分では解決できませんでした。
どうしてテキストエリアに書き込めないんですか?ソースは下記の通りです。
勉強不足なのは承知ですが、一日かかっても分かりません。知恵をお貸しください。

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

public class n extends JFrame{

Toolkit tk = getToolkit();
Dimension dim;

public Dimension getDefaultToolkit() {
dim = tk.getScreenSize();
return dim; }

public static void main(String[] args){
n myApp = new n();
myApp.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}});

myApp.setBounds( 130, 130, 600, 350);
myApp.setVisible(true);
}
264263-2:04/08/29 00:47
//続き
n(){
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.addTab("JButton", createPanel1());
Container content = this.getContentPane();
content.add(tabbedPane, BorderLayout.CENTER);
}

private JPanel createPanel1(){

JPanel p = new JPanel();
final JTextArea myText = new JTextArea();

myText.setLineWrap(false);
myText.setFont(new Font("Monospaced",Font.PLAIN,16));

//スクロールペインを作成してテキストエリアをセット
JScrollPane myScroll = new JScrollPane(myText);
myScroll.setPreferredSize(
new Dimension(getDefaultToolkit().width, getDefaultToolkit().height));

p.add(myScroll);
return p;
}

}
265デフォルトの名無しさん:04/08/29 00:52
すんません、質問です。宜しくお願いします。

下記PGの出力結果は『100 0』になるそーなのですが、、、

Stack st1 = new Stack();
Stack st2 = new Stack();
st1.push(new Integer(100));
st2 = st1;
System.out.println( st1 + " " + st2 );


『st2 = st1』によって、
Stack型の変数st2は、st1の領域を指しているのだから、
出力結果も『100 100』になると思っているのですが。。。

私の頭、どの辺でズレちゃってるのでしょうか?
266デフォルトの名無しさん:04/08/29 01:06
Java使った時点でずれてるかもしれませんね。
267148:04/08/29 01:09
Resultset rs = stmt.executeQuery(sql)
って、どの本にも念仏のように書いてありますが、何でインターフェースがインスタンスを作れるのか分かりません。
>>1のWikiにも「呼び出し形式のみ規定するものです」と書かれていますし。。うーん(-_-ι)。
268デフォルトの名無しさん:04/08/29 01:26
DB Oracle につないでいたモジュールがあるのですが、
Oracle を切断して、Access に切り替えたところ、
SQLExecption no data found が発生するようになりました。
Pool の設定でドライバをOracle のものからAccess のものに変更したせいでしょうか?
>>267
悩め悩め
ここがオブジェクト指向のもっともきもとなるところだから
分かればびっくりするくらいに使いまくるぞ
270デフォルトの名無しさん:04/08/29 02:11
>>263
テキストエリアには書き込めてる。
しばらくキーを連打してれば左端から文字が出てくる。
createPanel1()で作成してるJPanelがフローレイアウトのままなので
スクロールビューの起点が、テキストエリア内の右の方へと
ずれてしまってる。パネルpにボーダーレイアウトをセットすれば
一応解決する。しかし外にもツッコミどころはたくさんありますが。。。

271デフォルトの名無しさん:04/08/29 02:16
>>265
そのプログラムでは100 100にも100 0にも
ならないような。。。
272( ’ ⊇’):04/08/29 02:24
 
>>267 インターフェイスがインスタンスを作っているのではないよ。
ドライバ内部で生成されたインスタンスを、インターフェイスの型を持つ変数に代入して扱っているだけだ。
おはようございます。

http://www.ff.iij4u.or.jp/~ch2/bbsmenu.htmlのサイトから、GETしてHTMLを取得するのですが、
そのHTML内を見てみると、改行と数値「7EE」が混入されてしまいます。
通常は混入されないものです。
なぜなのでしょうか?
下記の7EEだけに限らず、他の行でも変な数値が混入されます。


<BR><BR><B>生活</B><BR>
<A HREF=http://life5.2ch.net/kankon/>生活全般</A><br>
<A HREF=http://life5.2ch.net/okiraku/>その日暮らし</A><br>
<A HREF=http://life5.2ch.net/homealone/>一人暮らし</A><br>

7EE
<A HREF=http://life5.2ch.net/sportsclub/>スポーツクラブ</A><br>
<A HREF=http://hobby7.2ch.net/bath/>お風呂・銭湯</A><br>
<A HREF=http://life6.2ch.net/anniversary/>記念日</A><br>
<A HREF=http://life6.2ch.net/sousai/>冠婚葬祭</A><br>
<A HREF=http://life5.2ch.net/baby/>育児</A><br>
275274:04/08/29 05:48
sock = new Socket(server, 80);
sockin = new BufferedReader(new InputStreamReader(sock.getInputStream()));
sockout = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));

sockout.write("GET " + "/~ch2/bbsmenu.html HTTP/1.1\r\n");
sockout.write("Content-Type: text/html"+ "\r\n");
sockout.write("Host:" + server+ "\r\n");
sockout.write("Accept: text/html, */*" + "\r\n");
sockout.write("User-Agent: Monazilla/1.00 (gbrowser/1.0)" + "\r\n");
sockout.write("\r\n");
sockout.flush();

StringBuffer sb = new StringBuffer();
while ((str = sockin.readLine()) != null) {
System.out.println(str);
}
ところで、URLじゃなくってSocket使う意味あるの?
277デフォルトの名無しさん:04/08/29 06:58
>>274
やってみたけど別に変な文字とか入らないよ
URLConnectionでも試してみたけど問題ないよ
278デフォルトの名無しさん:04/08/29 07:07
>>276
別にないでしょ
Socketでやると、自前でレスポンス解析しなきゃいけないから面倒
279デフォルトの名無しさん:04/08/29 07:12
>>278
おいしい餌を作るには、もう一手間と愛情が大事。
ね?
280デフォルトの名無しさん:04/08/29 07:25
279=274
281デフォルトの名無しさん:04/08/29 07:36
>>275のコードよりURLConection使った方がまじで倍以上速いんですけど
どうしたらいいでしょうか?
282274:04/08/29 07:52
やっぱ、

<A HREF=http://comic6.2ch.net/ymag/>少
800
年漫画</A><br>

と800というものが入りますね。
なぜだろう?

あと、別にURLConnectionでもいいですよ。
今は実験段階として試してるだけですから。
速さとか考えてないです。
283274:04/08/29 07:54
やっぱ、

<A HREF=http://comic6.2ch.net/ymag/>少
800
年漫画</A><br>

と800というものが入りますね。
なぜだろう?

あと、別にURLConnectionでもいいですよ。
今は実験段階として試してるだけですから。
速さとか考えてないです。
284デフォルトの名無しさん:04/08/29 07:55
>>282
毎回同じ再現性ないのか?
じゃ回線品質の問題だろ
>>274,282
HTTP/1.1の仕様です。
RFC2616 section3.6を見てください。
>>284 >>285

今度はよくなりました
<A HREF=http://comic6.2ch.net/comic/>漫画</A><br>
<A HREF=http://comic6.2ch.net/rcomic/>懐かし漫画</A><br>
<A HREF=http://comic6.2ch.net/ymag/>少年漫画</A><br>
<A HREF=http://comic6.2ch.net/wcomic/>週刊少年漫画</A><br>
<A HREF=http://comic6.2ch.net/gcomic/>少女漫画</A><br>

回線品質が悪いといっても、
最終的にはエラーのない受信をしてくれないことには・・・。
エラーがあったら、サーバへデータの再送をしてもらって、正確な受信をするというのが通信の基本だと思いましたが。

HTTP/1.1の仕様なんですか・・・。
信頼性のある通信をJavaで行うためにはどうすればいいのですか?
送られてくるデータはそのままきちんと受信される。
エラーのあるデータをそのまま受信して終わりみたいな信頼性無視ではなくて。
<A HREF=http://sports7.2ch.net/boxing/>ボクシン?

ボクシング板のところの最後でおかしくなってます。
ンの後でエラーかなんかで受信やめてるんですかね?

どうも初心者なのでいまいちわかりません。
288デフォルトの名無しさん:04/08/29 08:19
>>285
この件とは全然関係ないと思うけど実際にレスポンス確認した?
ただの生HTMLだよ
289デフォルトの名無しさん:04/08/29 08:37
>>287
レスポンスヘッダのContent-Lengthを取得して、
実際に受け取ったバイト数と違ってたら再取得。

そのまえに、URL使ってコード書き直して試してみたら?
URL使って試してみます。
他のサーバというか、2ちゃんねるサーバとの通信で不具合なんて全く無いんですが、
なぜか、2チャンネル板リストがあるhttp://www.ff.iij4u.or.jp/~ch2/bbsmenu.htmlと通信すると何か変なことになっちゃいますね

URL使ってコード組みなおしてみます。

皆様、本当にご返答ありがとうございます。
すいませんでした。
なんかやっぱり同じ箇所でエラーになるみたいw
http://comic6.2ch.net/rcomic/ 懐かし漫画
http://comic6.2ch.net/ymag/
<A HREF=http://comic6.2ch.net/wcomic/>週刊少年漫画
<A HREF=http://comic6.2ch.net/rcomic/>懐かし漫画</A><br>
<A HREF=http://comic6.2ch.net/ymag/>少
<A HREF=http://comic6.2ch.net/wcomic/>週刊少年漫画</A><br>
293デフォルトの名無しさん:04/08/29 09:38
>>274
HTTPのメッセージボディの転送方法には、フツーにデータを送るのと
もう一つチャンク転送方式というのがあります。アナタがアクセス
したURLはチャンク形式で送ってるのでしょう。
レスポンスヘッダのTransfer-Encodingフィールドを見てください。
chunckedという値があるかもしれません。
チャンク形式では、数値―改行―バイナリデータの一部塊―改行―数値・・(繰り返し)
というフォーマットでボディが送られてきます。
数値とはその塊のザイズです。よって普通にストリーム読み込みをすると
データ内に改行と数値が含まれてしまいます。chunked転送形式で読み込んで
みてください。
294デフォルトの名無しさん:04/08/29 09:44
>>274
URLConnectionを使えば、それも自動的にやってくれますから
それが一番楽な方法なんですが・・・・・
295デフォルトの名無しさん:04/08/29 10:00
>>268

296デフォルトの名無しさん:04/08/29 11:05
>>293
チャンク形式で送ってるかどうか確認してから書いてるか?
297デフォルトの名無しさん:04/08/29 15:35
このスレの上の方で触れられていることなんですが、
JavaのドキュメントってHTML形式のオンラインドキュメント
や書籍などを手動でたどって探すしかないんですか?

ほげほげしたいってとき見たいにメソッドなどの逆引きはできないんでしょうか?

エディター(vimなど)からドキュメント参照を支援してくれるものなどはありませんでしょうか?
vimだと↓みたいなスクリプトがあったんですが、
ttp://www.vim.org/scripts/script.php?script_id=358
System.out.printlnだとSystemしか検索できません。

manコマンドに-kを組み合わせて使ったり、
vimからC言語の関数を調べるときには、調べたい関数の上にカーソルを置いて
Kキーを押したりしてmanを引いたりしていました。

よろしくお願いします。
>>297 IDE使えば?
あとオンラインドキュメントを全文検索するのにgoogleを
活用するのもいいね。java.sun.comに検索範囲を限定したり
さらに細かい検索条件付けたり。
正規表現の話なんですが,

ID,AUTHER,MESSAGE
IDは数値,AUTHERとMESSAGEは文字列,AUTHERとMESSAGEは空でも良い

という形式の文字列から,カンマを区切り文字として各要素を取り出す時,
AUTHERやMESSAGEにカンマが含まれていた場合,つまり

ケース一 10,Ryutaro,Hashimoto,hogehoge
ケース二 10,RyutaroHashimoto,yes,I love Java
ケース三 10,Ryutaro,Hashimoto,yes,I love Java

というケースにも対応できるようにするためには,どうマッチングルールを書けばいいのでしょうか?
ケース三は無理なんじゃないかと思ったりするんですが….
>>299
スレ違い
checkPermission()のチェックによってアクセスが許可されないと判定された場合にはaccess denied (java.lang.RuntimePermission getProtectionDomain )
と出るようにしたいのですが
import java.security.*;
public class AccessControllerTest {

/** 処理の開始のメソッド */
public static void main( String argv[] ) {
try {
AccessControllerTest test
= new AccessControllerTest();
RuntimePermission rp
= new RuntimePermission( "getProtectionDomain" );
AccessController.checkPermission( rp );
ProtectionDomain domain
= test.getClass().getProtectionDomain();
System.out.println( domain.toString() );
}
catch( Exception e ){
System.err.println( e.getMessage() );
}
}
}
このような形で良いのでしょうか?
302デフォルトの名無しさん:04/08/29 18:09
>>299
言いたいことがわからない
>>299
正規表現うんぬんじゃなくて不可能。
データ構造のルールがおかしいのは分かる?

まず一般的な CSV だったら要素にカンマが含まれる場合はダブルクォートで囲む。
ただ、パース側でそんな判定すんのはメンドイから、要素はすべてダブルクォートで
囲むと楽。
>>299
言い忘れた。ダブルォートで囲った場合、要素にダブルォートが含まれる場合は
一般的にはダブルォートを二重化する。
>>303
そうですか,やはりデータを取得・生成した時点でそういう処理をしておく
必要があるのですね
ありがとうございました
>>296
2ちゃんの板は確かチャンクだった。
それ以前にボディの途中に数値と改行がまざってると言ったら、
チャンク以外にないだろ。
HTTP分かってるのか?
307148:04/08/29 20:09
私はperlerなのですが、イメージとしては、
1. ResultSet rs で、Resultset型クラス(ResultSetのメソッドと構造体付き)のメモリ空間を予約する。
2. stmt.executeQuery()で、ResultSet型のクラスを返す。
要するに、メモリ領域を確保するためだけに、1が必要ということなのでしょうか。

あと疑問なのは、インターフェースでメソッドの実装をしてしまうのもありなのでしょうか。
1、ResultSet rsでは、アドレス数値を格納するだけのメモリ領域を
 確保する。
2、executeQuery()は、ResultSet型のインスタンスを返す。
  このメソッド内でResultset型インスタンス(ResultSetのメソッドと
  構造体付き)のメモリ空間を確保する。

インターフェースのメソッドだけを実装するクラス、無名クラスを
作るのはよく行われる事。
309訂正:04/08/29 21:19
1、ResultSet rsでは、アドレス数値を格納するだけのメモリ領域を
 確保する。
2、executeQuery()は、ResultSet型のインスタンスを返す。
  このメソッド内でResultset型インスタンス(ResultSet内の構造体)
  のメモリ空間を確保する。

インターフェースのメソッドだけを実装するクラス、無名クラスを
作るのはよく行われる事。
>>307
勉強もせず、推測だけで物事を判断するあなたは名探偵ですね。
転職してください。
311デフォルトの名無しさん:04/08/29 21:33
>>307
1は、単にResultSetへの参照を格納するための変数を宣言しているだけだよ。
実際にメモリの割り当てを行っているのはstmt.executeQuery()で、
この中ではResultSetの実装クラスがnewされている。
つまり、

class PostgreSQLResultSet implements ResultSet {
...

のような、クラスがどこかで定義されていて、
executeQueryの中で new PostgreSQLResultSet(...)
が行われているはず。
PostgreSQLResultSetはResultSetと互換性があるので、
ResultSet型の変数に格納できるわけ。

>あと疑問なのは、インターフェースでメソッドの実装をしてしまうのもありなのでしょうか。
上のように、インターフェースをimplementするクラスはインターフェースのメソッドを実装できる。
というか、そうするためにインターフェースがある。
例えばOracleResultSetとか、MSSQLResultSetというようなクラスが
ResultSetをimplementしていれば、全部ResultSetとして扱えるので、
JDBCを利用する側はResultSetの実装クラスが何であるかを気にしなくてもよいという
利点があるわけね。
312307:04/08/29 21:34
>>310
まだ学生なんですよ。ちなみに筑波大の理系です。
あなたはどこの大学ですか?w
313310:04/08/29 21:36
代々木アニメーション学院ですが、何か?
314310:04/08/29 22:02
>>313は偽物です。
本当はペパーダイン大です
>>307
あのっさあ、何でショートカットしようとするわけ?
ちゃんと勉強せずにポイントだけわかろうと手抜きするからそうなるんだよ。
初心者入門用の本すら読んでないだろ?
おまけに全然自分でやろうって気がないのな。聞いて全部済ませる気か?
インターフェースでメソッドの実装だの何だの、自分で試して見ればわかることだろうが。
316デフォルトの名無しさん:04/08/29 22:08
>>306
今問題になってるURL分かってるか。2chの板じゃねーぞ。
317デフォルトの名無しさん:04/08/29 22:11
筑波大の学生ってこんなのばっかりなの?
日本の科学技術の未来は暗いなぁ
さて、>>307は煽って早く質問の答えを知ろうとする作戦に出たが
その粗末な煽りかたで作戦は失敗に終わり、
このスレでは教えてもらえなくなったわけだが。
319148:04/08/29 22:35
>>309
>>311
なるほど、ありがとうございます。

>>310
>>315
>>318
確かに、勉強不足でスマソ。
>>315-318
もう二人の方に教えてもらったからいいですよ。
理解できました。物事のポイントを押さえる事の何が悪いんですかねぇ?
しかし嫉妬は怖いですね。
最後にもう一度聞きましょう。私は筑波の理系です。
あ  な  た  は  ど  こ  の  大  学  で  す  か  ?
321デフォルトの名無しさん:04/08/29 22:43
>>320
高卒です・・・・
高卒の奴はこの板から出てけよ。(禿藁嘲笑)
>>320
俺は中卒だが、少なくともお前よりは人に質問するときの心得はある。
大丈夫か? 筑波大の理系は。
324デフォルトの名無しさん:04/08/29 22:47
ファイルダイアログからTransferHandlerでドラッグ&ドロップした
ファイルを、JListのある特定のセルに落としたいのですが
ドラッグ中のマウスカーソルがファイルダイアログの外に出た後の
マウスカーソルの位置の取得方法が分かりません。
どうすれば位置が取得できるのでしょうか?
>>323
中卒の嫉妬って怖いですね。
あなたは、この板に居ていいと思ってるんですか?
>>320
結局教えてもらってばっかりだなw
筑波の恥さらしめ。消えろ。
>>325
この板? どういう意味?
今はフリーSE で色々な企業まわって業務 SE や PG に業務モデリングや Java の
教育してる身だから Java 初心者が何を知りたいか、この板は勉強になるんでね。
まー、筑波大のあんたは業務系なんか関係ないか知らんけどね。
自分で動かないで他人に頼りっぱなしを「何が悪い」と開き直り、
学歴を振りかざして優越感丸出し。
本当、あんた筑波の恥さらしだよ。頼むから二度と来るなよな。
330デフォルトの名無しさん:04/08/29 23:29
>>320
筑波のパチンコ屋「大学」ですか?それとも筑波大の敷地に入りましたか?
筑波大気分味わえて、よ か っ た な 。 小 卒 ! !
>>320
小卒ですが何か。
ただの学歴煽りだろ。放置しとけ。
333デフォルトの名無しさん:04/08/29 23:51
いや〜俺マサチューセッツ工科大卒なんだ・・・

*言うだけなら誰でも*
筑波大ってそんなに良い大学なの??
あまりいろんな大学のことは良く知らないんだけど…

   彡川川川三三三ミ〜  プウゥ〜ン
   川|川/  \|〜 ポワ〜ン    ________
  ‖|‖ ◎---◎|〜        /
  川川‖    3  ヽ〜      < 筑波大だけど文句ある?
  川川   ∴)д(∴)〜       \________
  川川      〜 /〜 カタカタカタ
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \妄想命_     |  |    |__|
  | \      |つ   |__|__/ /
  / ドキュソ氏ね | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
>>334
*言うだけなら誰でも*

筑波大は一応国立(くにたちじゃないよ)だから。
もまいら全員マ板逝け。
筑波の名を出しただけで、こんなにもレスが伸びるとは
みなさん、本当に私に嫉妬してるみたいですね。
そんなにうらやむ事じゃないですよ。どうぞあなたたちも
勉強して筑波に入ってください。一応年齢に関係なく誰でも
受験資格はありますからね。
>>338
言うだけなら誰でも。

まあ俺はマサチューセッツを首席で卒業したから君とは格が違うのだよ。格が。
筑波だか竹馬だか知らんが日本の大学で偉そうにしている愚民どもが。
俺は大学院出たよ。
俺はMITの教授だよ
俺はイェール大だ。MITにはかなわんな。。。
俺カリフォルニア大バークレー校だ。
俺は筑後川波力発電大>>338脳内校、略して筑波大だ。
俺は神大だ。
俺は神。俺こそが神。
×神戸大学
×神奈川大学
○神大学
348297:04/08/30 00:56
>>298
レスありがとうございました。
IDEの導入を考えてみようと思います。
学歴ヲタには英語をテストしてやりゃいいな。
(   )内に適当な語を(a)〜(d)より選べ。
All three are about war, though none is about combat. Perhaps representing
a new generation of war films, they (   ) not on the soliders who fought
and died but on the women and families left behind.
(a)concern (b)deal (c)discuss (d)focus
俺は高校のとき解けた。
> a new generation of war films, they (   ) not on the soliders who fought
soldier じゃなくて?
>>350
全然。theの使い方を考えろ。というより語法問題。
the soliders=All three are about warじゃねーの?
All your base are belong to us.
You is a big fool man. ha ha ha.
>>351
soliders って soldiers のスペルミスじゃないん?
You is.
You be.
You bee.
soldiersならアレだな。脳内筑波大君は消えたの?
>>355
釣りじゃry
soliders って知らんのですが、それだと別の解釈になるんすか?
He said that that that that that that that that boy referred to was supposed to indicate, was out of place in the sentence.
"Two grandmothers, with their two granddaughters; Two husbands, with their two wives;
Two fathers, with their two daughters; Two mothers, with their two sons;
Two maidens, with their two mothers; Two sisters, with their two brothers;
Yet only six in all lie buried here; All born legitimate, from incest clear."
Explain this - how is everyone related.
What is broken when you name it?
ダイソーにて
「ザ・アクセサリー」
thou
368263_1:04/08/30 02:16
>>270
ありがとう。なんとかなりました。

>>364
そんなことをここで聞いてどうするの?
いた違い。

それと、もう一つあるんですが、現在選択中のタブはどう取得すればいいですか?
下だとインデックスが0になります。

public class Test1 extends JFrame {

Container myContainer = null;

private JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.LEFT);

public Test1(String title) {

super(title);

myContainer = this.getContentPane();

myContainer.setLayout(new BorderLayout());

JLabel myLabel1 = new JLabel("ひとつ目");
JLabel myLabel2 = new JLabel("ふたつ目");
JLabel myLabel3 = new JLabel("みっつ目");
JLabel myLabel4 = new JLabel("よっつ目");

//続く
369263_1:04/08/30 02:16
//続き
tabbedPane.add("Label1", myLabel1);
tabbedPane.add("Label2", myLabel2);
tabbedPane.add("Label3", myLabel3);
tabbedPane.add("Label4", myLabel4);

getContentPane().add(tabbedPane);

JMenuBar myMenuBar;
JMenu myInfoMenu;

JMenuItem myTabCountMItem;

myMenuBar = new JMenuBar();
setJMenuBar(myMenuBar);

myInfoMenu = new JMenu("現在選択中なのは " +
Integer.toString(tabbedPane.getSelectedIndex()) + "番タブ");
myMenuBar.add(myInfoMenu);

myTabCountMItem = new JMenuItem("タブの総数は " +
Integer.toString(tabbedPane.getTabCount()));
myInfoMenu.add(myTabCountMItem);
}
スレ違い氏ねよ
371デフォルトの名無しさん:04/08/30 04:36
すいません質問なんですが、

./MyBeans/Bean1.class を JavaBeans にするとき
$jar cvfm Bean1.jar manifest MyBean/Bean1.class って指定しますよね?

この場合、マニフェストファイルって現在のディレクトリ(./)に置かなくちゃいけないんですよね?

MyBeans ディレクトリに保存してしまうと
作成はできても実際使うときにエラー出しますよね?
JavaBeansの定義が、狭いような気がするが。
「実際使うとき」がどういう環境を指してるのかわからんし、「エラー出しますよね?」などと同意求められても、どんなエラーかわからんし。
373デフォルトの名無しさん:04/08/30 06:06
>>324
JListにリスナー設定しろよ

>>369
リスナーの中でやれよ

>>371
マニフェストはべつにカレントになくても取り込むよ
>>368
一つ目のタブでいいんじゃないの。
こんにちは

JLabel jL = new JLabel("ボタン");
jL.setSize(300,20);
jL.setBackground(Color.GREEN);

上記のソースでビルド・起動しても、
JLabelのバックグラウンドカラーが変わりません。
試しに、フォアグラウンドカラーは変わりました。

jL.setForeground(Color.GREEN);

JLabelのバックグラウンドカラーを変えるためには、
何か他に手続きがいるのでしょうか?
そういう時は、setOpaque(true)だ。
Javaをはじめて3ヶ月。やと人の役に立てたような気がする。
377375:04/08/30 12:33
>>376
解決しました
ありがとうございました
378デフォルトの名無しさん:04/08/30 13:50
JPanel panel = (JPanel)getContentPane()

Container panel = getContentPane()

同じ
379デフォルトの名無しさん:04/08/30 14:01
Jakarta Projectのように、オープンソースライブラリを作成している、
なんとかHouseっていうプロジェクトがあったと思うのですが、
名前を思い出すことができません。

ご存知のかた、教えてください。
380デフォルトの名無しさん:04/08/30 14:03
>>378

同じではない。前者は場合によってエラーになる。
Containerで受ける方が行儀がいい。

そもそもJFrame#getContentPane()が実装しているRootPaneContainerインター
フェイスでは、Container getContentPane() というシグネチャになっている
ので、実体としてJPanelが返って来るという保証はない。
たとえばJFrame#getContentPane()(=JRootPaneへの委譲)みたいに、実装によっ
てはJPanelが返ってくるかもしれんというだけのこと。

JPanelが返ってくるのが分かっているならJPanelにキャストしてもいいが、
自分以外が実装したものでinstanceofでチェックもせずに無条件にキャスト
するのは行儀が悪い。そうしている場合、実装が変わっても文句は言わない
こと。
382デフォルトの名無しさん:04/08/30 14:52
>>381
サンクス。
半分分かって半分分からんorz
後者だと間違いないでよろし?
1行で書くなら、Containerにしとけ、で。

仕様上はContainer返すとしか決まってないんだから、やってみたら
実体がJPanel(Containerの間接的サブクラスだからContainerとして
扱える)だったからって暗黙の期待はするべからずということ。
384デフォルトの名無しさん:04/08/30 15:40
>>383
了解〜
jdkのsrc.jarをかち割ってjavadocかますとどえりゃー事なります。
どつく作った奴のスペックはどんなんなの!自分のマシンjava.beanでもうへこたれます。
2THzの2TBぐらいいるでしょこれ、
privateなもんまでドキュメント化されてるのどっかで見ませんでしたか?
386ケン ◆KENNYY/YXo :04/08/30 15:57
(ケン ´・∀・`)ヌルポ
387384:04/08/30 16:55
>386
ありがとうケン!その方法でもっかい試してみるよ
388ケン ◆KENNYY/YXo :04/08/30 17:00
(ケン ´・∀・`)だれだテメー
>>385
cat /dev/null > src.jar
したらスペックが貧弱でも大丈夫ですよ
390デフォルトの名無しさん:04/08/30 17:22
普通はecho -n '' > src.jar
>>373
APIドキュメント見てもいまいち分からないんですが、JListと同じように設定すればいいんですか?

>>374
タブで管理してタブごとにファイルの読み書きをしたいので、タブのインデックスをメニューバーで使用したいです。
>>385
確かに時間かかるな。
src.jar 全ソースで 4分41秒 もかかったよ。
private もつけたし。

CPU が 2THz だったら 0.3 秒くらいかな。たぶん。
393デフォルトの名無しさん:04/08/30 20:35
サーバーからファイルをクライアントへダウンロードする場合
ダウンロードダイアログを表示し、ファイル名と保存場所を指定するのが
一般的だと思いますが、
ダウンロードダイアログを出さずにプログラム上で指定した
ファイル名、保存場所に保存させることは可能でしょうか?
調べたのですが実現方法が分からないので、知っている方がいたら教えてください。
お願いします。
>>393
すばらしいセキュリティ意識ですね。
>>393
じゃ、俺はダウンロードしたらお前の PC のシステムディレクトリを
上書きするプログラムを書きたい。ダイアログ無しで。

まー、ほんとにやりたいんだったら、WindowsUpdate がやっていることを
ネットワークトレースして見れば?
org.apache.tools.zip.ZipOutputStream を使用して ZIP ファイルを作成したいのですが、
setEncoding でエンコーディングに "Windows-31J" や "Shift_JIS" にしても
ファイル名が Shift_JIS になりません。
バイナリエディタで見ても何でエンコードされたのか不明です。
(UTF-8 でも ISO-2022-JP などのほかの日本語コードでもありませんでした。)

どなたかうまく行っている方、アドバイスください。
>>396
java.net.URLEncoder
398デフォルトの名無しさん:04/08/30 21:56
>>391
JListにマウスリスナーを仕掛けて、その中で
JList#locationToIndex(Point�location) で取得したインデクスを
保存しておく。もちろんmouseExitedでクリアーも忘れずに。
ドロップ処理の中でその値を取得して、ドロップ先を特定する。

399デフォルトの名無しさん:04/08/30 22:19
>>398
ダメなのです。
swingドラッグサポートが開始されて、マウスカーソルがドラッグ&
ドロップ処理中に移ると(TransferHandler#getSourceActions、
#exportAsDragが呼び出されると)、イベント発生元のコンポーネント
を含む全コンポーネントのマウスリスナーの呼び出しがシャットダウン
されてしまうのです。マウスイベント発生通知がJAVAのシステム部分?で
独占されてしまってるみたいなのです。
そのシステム部分?からマウスカーソルの位置情報を知るにはどうすれば
いいのでしょうか?
>389-390
ありがとう消えてった!わっかんないてそれ向きそれでいいの??なんか裏テクなのかと決めちったぜ
危ないからほんと

>392
それ嘘でしょ?ありえないでしょ??本当なら何が違うの?jdk?もし未使用?
オプションは?失敗してはいろいろ引数かえてたら

javadoc -d ../doc -private -use -windowtitle "Java 2 Platform SE 5.0" \
-doctitle "Java 2 Platform SE 5.0" -breakiterator -splitindex \
-sourcepath ./src -nohelp -quiet -nonavbar -linksource -nonavbar \
-linksource -subpackages *

こんなんなっちゃってました、antでやったほうがいいの??あっちのほうが余計くたばりそうだけども
これって-Xmxとか入りません?
>>400 javadocのヘルプくらい読め。
402デフォルトの名無しさん:04/08/30 22:52
Frameをつかって、Panelのaddとremoveをやってパネルの切り替えをしています。
Appletをつかってaddとremoveで切り替えようとするとうまくいきません。
(removeはできるがaddが反映されない)
validateを呼び出して再配置をしてみましたがうまくいきませんでした。
appletで部品の切り返ってどうすればよいですか?
403デフォルトの名無しさん:04/08/30 22:55
>>398
JList#getDropTarget()でDropTagetを取得して、
DropTargetListenerをしかける。
DropTargetDropEvent#getLocation()
404デフォルトの名無しさん:04/08/30 22:56
カードレイアウトを使おう!
まず、日本語だな。
406デフォルトの名無しさん:04/08/30 22:59
>>403
おお、ありがとうございました!
>>400
4分は ant だよ。maxmemory
あるオブジェクトをシリアル化しようと思ってます。そのとき、
Imageのようなシリアル化できないオブジェクトがフィールドとしてある場合
そのフィールドだけシリアル化の対象外にすることはできますか?
transient
>>409
こんなキーワードあったんですね。初めて知りました&使います。
ありがとうございました。
>>410

言っておくが、transient指定するとシリアライズ対象外になるんだから、
その部分をどうやって保存/復元するかは自分で決めないといかん。

再現時に無視できるフィールドなら気にしなくてもいいけど、たとえば
Imageを

private void writeObject(ObjectOutputStream out) throws IOException
を定義してピクセル値の配列で出力、
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
を定義して、その配列を読み取って再構成

する必要があるかもしれない。

しかし、なんかネタっぽい質問だな。
例の単発分かりきった質問厨じゃないか?
>>411
transient指定したImageは代わりにPixelGrabberでint[] pixelsにして
このint配列をシリアル化するようにしました。

復元するときはint[] pixelsからcreateImage(MemoryImageSource)で
Imageを再構成しました。

>>412
ネタじゃないです・・・オブジェクトのシリアル化機能自体最近知って感動してます。
今まではフィールドごとにテキストで出力しようとしてました。
>401その言葉かなりぐっときたどうも
-helpで表示される以外にオプションがこんなにあるんね、あとは1.4と1.5の違いにたまげた
やりたかった日本語1.4docをまーじつーるのお力拝借して1.5のsrcにねじ込む。
それで1.4|=1.5docできない、の。か?@assert?眠すぎでわかんないけど、

>407
antかなりすっごい使い勝手よすぎでした。反則気味にjavadocより早かった、気になって追っかけて見たら生で叩いてる。のかな?もーだめだ
エラーじゃばじゃば出ますがなんとかいけそうです。1.5と互換の問題で作らないほうが
ありがとうございましたおやすみなさい
415デフォルトの名無しさん:04/08/31 11:04
質問ですが、

StringBufferクラスにsubstringという部分文字列を取り出すAPIがありますが、
以下のようなデータを決められたフォーマットにしたがって取り出していくのですが、

200005141092ブロードアピール 570松永幹

このデータをsubstringで取り出すと、半角と全角を同じ「1」のオフセットとして扱うため、半角として30文字取り出したいのに、substringだと
全角30文字として取り出せれてしまい、データがずれてしまいます。

StringBuffer(String)にある文字列を半角として部分的に取り出すことは可能でしょうか?


>>415
30byte取り出したいって事か?
フォーマット決まってるなら、半角の文字数+全角の文字数指定すればいいだろ。
417デフォルトの名無しさん:04/08/31 11:29
二つ質問させてください。

 フレームの中に複数のパネルを配置して各々の場所で何らか作業する場合、
それらのパネルは一つ一つスレッドを使って作業させた方がよいのでしょうか?
 またスレッドは百個くらい起動させても同機がとれるものなのでしょうか?
>>417
スレッドに分けるかどうかは作業の内容による。
スレッドの同期は自分で取らなきゃだめ。
419デフォルトの名無しさん:04/08/31 11:37
>>400
JavadocはAntで使うのが常識だよ。
俺の中では
420デフォルトの名無しさん:04/08/31 11:39
>>414
> >407
> antかなりすっごい使い勝手よすぎでした。反則気味にjavadocより早かった、気になって追っかけて見たら生で叩いてる。のかな?もーだめだ
> エラーじゃばじゃば出ますがなんとかいけそうです。1.5と互換の問題で作らないほうが

何が何を生で叩いてるのだ?
どんなエラーが出るのか?
お主が書いたAntのjavadocタスクのコードを見せてみろ
421デフォルトの名無しさん:04/08/31 11:56
JListのデフォルトのマウス動作は、プレスするとその一つのセルだけを
選択状態にしますけど、こういう各コンポーネントのデフォルトのマウス
イベント処理を無効にするにはどうすればいいのでしょうか?
ドラッグサポートを使いたいのでremoveMouseListener()以外の方法で
お願いします。
422デフォルトの名無しさん:04/08/31 12:23
>>418
レスありがとうございます。
たとえばボタンだけ配置されているパネルとかは
スレッドに分ける必要はないのでしょうか?
>>415
結局、そのデータで馬名が日本語の場合、C言語だと2バイトになるけど、
Javaの場合UNICODE扱いだから、1バイトになって処理されるのが問題なんですよね?

ならば、その文字が英字なのか?そうでないのか?を調べればいいのではないでしょうか?
Stringクラスに正規表現をつかって文字列内の情報を調べるものがあります。

matches(String regex)
regexには正規表現を指定してください。javadocに詳細があります。

そこで、matches([0-9])みたいにその文字列が0から9の数値なら〜みたいに文字列を調べればいいのです。
424デフォルトの名無しさん:04/08/31 12:28

JavaAppletによって描いて出来た画像をサーバーに保存したいのですが、
どうすれば良いのでしょうか?

画像データとしてCGIに送るのかと思い、調べたのですが解りませんでした。

キーワードだけでも教えていただければ頑張って調べます。

あほなので出来れば解りやすくお願いします。
そのサーバーがどのプロトコルを用い、どんな受付方法を設定してるかで
千差万別だけど、最も一般的なHTTPなら、URLConnectionでつないで、
それから得たOutputStreamインスタンスで送ろう。
あとはサーバーの問題です。
>>424
CGIでバイナリを受け取るのって、実は文字を受け取るより簡単だと思う
ただサンプルは少ないかもな
427424:04/08/31 13:14
>>425
>>426
ありがとうございます。
良く解ってないのですが、頑張って調べていきたいと思います。
428デフォルトの名無しさん:04/08/31 15:46
正規表現についてお尋ねします。
String TestString = "123abc456";

このTestStringの中に、"abc"が入っているかどうかを
判断するにはどのようにしたらよいのでしょうか?
>>428
スレ違い。正規表現スレいけよ
430デフォルトの名無しさん:04/08/31 16:29
スレ違いって訳でもないよ。
TestString.matches(".*abc.*")
でOK
単に文字列が入っているか調べるだけなら
TestString.indexOf("abc")で-1が戻ってないか判定するだけでもよさそう。
432デフォルトの名無しさん:04/08/31 16:52
>>430
レス有難うございます。ご指摘の通り試したところうまく動作しました。
Perlで正規表現使ってたんですけど、Javaとの違いにまだ慣れてないみたいです。
勉強します_| ̄|○

>>431
う…、そう言われればそうでした。
433369:04/08/31 17:52
どうしてコンパイルすら通らないんでしょうか?

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class Test extends JFrame implements ChangeListener {
JLabel label = new JLabel("項目を選択>インデックスを表示");
JTabbedPane tabPane = new JTabbedPane();

Test() {
JLabel myLabel0 = new JLabel("ひとつめ");
JLabel myLabel1 = new JLabel("ふたつめ");
JLabel myLabel2 = new JLabel("みっつめ");
JLabel myLabel3 = new JLabel("よっつめ");

tabPane.addchangeListener();
getContentPane().add(label, BorderLayout.NORTH);
getContentPane().add(tabPane);

//続く
434369_2:04/08/31 17:52
//続き
tabPane.add(myLabel0);
tabPane.add(myLabel1);
tabPane.add(myLabel2);
tabPane.add(myLabel3);
}

public void stateChanged(ChangeEvent e) {
label.setText(Integer.toString(tabPane.getSelectedIndex()));
}

public static void main(String s[]) {
Test myApp = new Test();
myApp.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
myApp.setBounds( 130, 130, 640, 480);
myApp.setVisible(true);
myApp.setTitle("Test");
}
}
>>433
コンパイル時にどこでどんなエラーメッセージが表示されるのかぐらい書けよ
>>433
ここが変
tabPane.addchangeListener();
java2 SDK1.5をインストールしたらアンインストールできなくなりました。
どうすればいいですか?
>>437
・あきらめる
・OSから再インストール

好きな方を選べ
コントロールパネルからアンインストールできないんですか?
>>439
はいそーなんです。
>>440
・該当のレジストリを消す。
・インストールディレクトリ(JDK)を消す。
・システムディレクトリの java.exe とか(JRE)も消す。
・窓の手とかでアプリ追加/削除のエントリを消す。

で、アプレットが動かなくなると。
442デフォルトの名無しさん:04/08/31 20:12
質問させてください。
今Javaでアプリケーションを作ってみようと思っています。
GUIに使うものとしてswingを考えていたのですが、
動作が遅いと聞いたので、AWTとどっちがいいか迷っています。
AWTとSwingってそこまで速さに違いがあるのでしょか?

ちなみに作るコードは500KB位と考えています。
どうかよろしくお願いします。
443369_2:04/08/31 20:31
>>435 >>436

すみません。
シンボル: メソッド addchangeListener ()
場所 : javax.swing.JTabbedPane の クラス
tabPane.addchangeListener();

シンボルtabPaneが解決出来ないと出ます。JDK1.4.2_5です。

ラベルにインデックスを出したいのですが・・
444デフォルトの名無しさん:04/08/31 20:45
標準に設定されたブラウザにアドレスを与えて
ブラウザを起動させたいんですけどどうしたらいいですか?
445デフォルトの名無しさん:04/08/31 20:50
>>443
もう解答は上に出てるよー。
addChangeListener()に、パラメータがないんだよー。
かっこの中にChangeListenerの実装インスタンスを入れておくれよー
446デフォルトの名無しさん:04/08/31 20:53
>>442
どっちも大して変わらないよー。
と言うか、AWTは未完成のGUIコンポーネントなので
今使う意味は全くないですよー。
何だかんだ言ってもSwingが最もポピュラーなんですよー。
速度がそんなに気になるならSWTをつかっておくれよー。
447デフォルトの名無しさん:04/08/31 20:55
>>444
JAVAの質問じゃないよー
>>443
API仕様をよく見ろ
449デフォルトの名無しさん:04/08/31 21:00
>>447
おまえ日本語読めないのか
450444:04/08/31 21:07
>447
javaプログラムでイベントを受けた際に
>444のような処理を行いたいんです。
451369_2:04/08/31 21:34
>>445 >>448

最初は
addchangeListener(this)としていたんですが、cが小文字なのを気付きませんでした。

ヒントを下さりありがとうございます。
452デフォルトの名無しさん:04/08/31 22:29
アプレットで,イベントを受け付けた際に,ブラウザ内の別フレームにHTML
を出力するプログラムがうまく動きません.
コンパイルは通るのですが,ソースの
static AppletContext appletcontext;
の部分でエラーが起こります.
この場合,どのような原因が考えられるでしょうか?

import java.applet.*;
import java.net.*;

public class applet extends Applet
{
static AppletContext appletcontext;
public applet()
{
appletcontext = getAppletContext();
try
{
URL url = new URL(getDocumentBase(),"frame.html");
appletcontext.showDocument(url,"frame");
}
catch(MalformedURLException e){}
}
}
何かアプレット系の質問多いですね。
サーブレットの質問です。

コンテントタイプをiso-8859-1で設定している入力画面から
全角文字が入力された場合エラーにしたいのですが、全角
文字の判定方法がわかりません。

コンテントタイプをシフトJISにすればできるのですが、
コンテントタイプは変えられないので困っています。
455デフォルトの名無しさん:04/09/01 08:37
おはようございます、起きぬけで恐縮ですが質問させてください。
Java Applet から CGI プログラムを呼び出して、返って来た
バイナリデータを byte b[] に収めたいと思い、以下のような
ルーチンを作りましたが、問題があります。

byte b[] = null;
InputStream in = null;
URLConnection uc = null ;

try {
URL u = new URL(getCodeBase()+"getdata.cgi");
uc = u.openConnection();
in = uc.getInputStream();
byte buf[] = new byte[16384];
int n;
System.out.println("Content-length: " + uc.getContentLength()); // ここで -1 が返る
ByteArrayOutputStream bos = new ByteArrayOutputStream();

// ここに問題がある?
while((n = in.read(buf, 0, buf.length)) != -1){//
bos.write(buf,0,n);
}

in.close() ;
b = bos.toByteArray();
(以下継続)
456デフォルトの名無しさん:04/09/01 08:37
(455続き)
この方法で処理を行うと、一見するとデータが読み込めているように
見えるのですが、実際に読み込まれたデータは、0x0a のデータが
0x0d,0x0a に置き換わってしまい元のサイズより大きくなってしまい
ます。どうやらテキストデータのCRLF置き換えが勝手に行われている
ようなのですが、この問題を回避する方法はありますでしょうか?
よろしくおねがいします。
>>452
getAppletContext()をコンストラクタじゃなくてinit()で行う かな。
コンストラクタ実行時点ではAppletStubが設定されてないから。

>>454
元々Shift_JISやWindows31Jに含まれる文字しか入ってこない
前提があるのならgetBytesして判別もありだと思うけど、まあICUみたいな
ライブラリ使うのがまともじゃないかな。

>>455
それ、元のCGIからは確実に0x0aで吐き出されているの?
他の手段で確認した?
458457:04/09/01 08:54
ほんとはcontent-type: textのコンテンツは改行
コードは<CR><LF>ってことになってるから0x0aで
送ってもらうこと自体がアレ。みんな守らないから
クライアントも0x0aも想定してコード書かないと
いけないけどね。
459454:04/09/01 09:47
>457さん

それはこんなやつでしょうか。

public boolean byte_str_check( String i_str_data)
{
int str_len1 = i_str_data.length();

//エンコード
try {
i_str_data = new String(i_str_data.getBytes("8859_1"), "Shift_JIS");
} catch(Exception e) {
return false;
}
//lengthの比較処理
}

こちらは試してみたのですが、GetBytesでうまく全角文字に変換されません。
引数に与える文字コードが間違っていますか?
460454:04/09/01 09:49
>457さん

それはこんなやつでしょうか。

public boolean byte_str_check( String i_str_data)
{
int str_len1 = i_str_data.length();

//エンコード
try {
i_str_data = new String(i_str_data.getBytes("8859_1"), "Shift_JIS");
} catch(Exception e) {
return false;
}
//lengthの比較処理
}

こちらは試してみたのですが、GetBytesでうまく全角文字に変換されません。
引数に与える文字コードが間違っていますか?
461454:04/09/01 10:01
>457さん

それはこんなやつでしょうか。

public boolean byte_str_check( String i_str_data)
{
int str_len1 = i_str_data.length();

//エンコード
try {
i_str_data = new String(i_str_data.getBytes("8859_1"), "Shift_JIS");
} catch(Exception e) {
return false;
}
//lengthの比較処理
}

こちらは試してみたのですが、GetBytesでうまく全角文字に変換されません。
引数に与える文字コードが間違っていますか?
3連続で荒らすとはやるな
463デフォルトの名無しさん:04/09/01 11:27
455 です。 > 457 氏
すまんす、ご指摘の通り、CGI(Perl)側の問題のようでした。
Win上でローカル試験してるんですが、きちんと binmode の
出力を指定しているにも関わらず、0x0d,0x0a 変換していま
した。Linux 上でリモート試験したら正常に動きました。
以後は Win & Perl の問題なのでそっち方面で解決します。
ご指摘感謝&吊ってきます。
vectorでオブジェクトを追加した場合、vectorにはオブジェクトへのポインタが入るのでしょうか?
それとも追加するオブジェクトのコピーが生成されるのでしょうか?
>>464
ポインタが入る
vectorと小文字で書かれているからSTLのスレか何かと思ってしまった。
内部では配列に代入しているだけなので、あなたのいうポインタです。

コピーを生成して代入していると仮定すると、Vectorに格納されるすべ
てのインスタンスは、Cloneableを実装しているか、Serializableを実装
しているか、といった限定が付きそうなものですが、実際にはそうでは
ありませんね。
467414:04/09/01 13:44
>420、ご報告までに、生で叩くってのは書いた本人も意味わかりません。無視してください
<target name="javadoc">
<javadoc destdir="${docs}"
author="true"version="true"
locale="ja"sourcepath="src"
charset="Shift_JIS"encoding="ms932"docencoding="ms932"
maxmemory="256m"access="private"failonerror="false"
splitindex="true"windowtitle="Java 2 Platform, Standard Edition, 1.5.0">

<packageset dir="src"><include name="**/**" /></packageset>
<doctitle><![CDATA[<EM><b>Java<sup><font size=-2>TM</font></sup> 2 Platform<br>Standard Ed. 5.0</b></EM>]]></doctitle>
</javadoc></target>

[javadoc] パッケージ javax.imageio.spi のソースファイルを読み込んでいます...
[javadoc] javadoc: java.lang.OutOfMemoryError: メモリを増やしてください。
[javadoc] たとえば、Sun の classic もしくは hotspot VM では、-J-Xmx32m のように
[javadoc] -J-Xmx オプションを使用します。
[javadoc] 61 errors
[javadoc] 224 warnings
BUILD SUCCESSFUL
Total time: 41 minute 35 seconds
お亡くなりになります。何も作られません。<include name="org/**" />でまわすと
19 errors
3808 warnings

BUILD SUCCESSFUL
Total time: 13 minutes 11 seconds
なんかエラーは出ますが、最後までいきます。
これは完全にスペックの問題ですね?指定してる256mも実際256しかないので150mぐらいしか使えないんじゃないかと、PC100のメモリー最近はもう売ってないですし、困りました。当然かなりスレ違い野郎ですね。
入れ食いエラーの内容は、"assert はキーワードなので識別子として使うことはできません。"でした。
おぉ、そっか。
だとするとArrayListなんかもポインタか
ちょいとコレクションフレームワークを復習しよう
>>465-466
ありがとうございます。

mallocが使えないんで苦労していましたがこれで何とかなりそうです。
>>468
そのまえに、Javaの参照を勉強しなおせ。
Javaでmallocとか意味わかんねぇ・・・
Cは知ってるんだぞ、というささやかな主張だ。
言語別に勉強できてないことを露呈したわけだが。
というか、Cでもムダにmallocしてそうな悪寒。
474デフォルトの名無しさん:04/09/01 20:32
文字のデータを切り取るメソッドを作りたいのですが
下のようにしているとスタート値が0で終了値が30の時には
30文字を取りに行ってしまいます

30文字ではなくて30byteで取りたいのですがどのようにすればいいのでしょうか
ご教授お願いします

返り値はStringで返したいです


String getSubData( String str, int s, int e ){
 String substr;
 substr = str.substring(s,e);
 return substr;
}
getBytesする。
"hoge".hashCode()のように文字列リテラルのハッシュ値等は定数式にはなれないのでしょうか?
static finalで宣言してもinterfaceで実装してもコンパイラに定数式じゃないと怒られてしまいます
477デフォルトの名無しさん:04/09/01 20:55
>>475
こういう人って文字コードとか文字幅とかどう考えてるんだろ?
478474:04/09/01 20:58
たとえば帰ってくるデータが

0000あいうえおかきくけこ123asdああああ

みたいな文字列で

00
00あいうえおか
きくけこ123
as
dああああ

の様に切り分けたいんです、、さっきのちょっと直してみたんですが全然ダメでした・・・

byte[] substr;
substr = str.substring(s,e).getBytes();
return substr.toString();
>>478
 長さをbyteで計算して切り出したいのに、getBytesする前に
substringしたら意味ないだろう。あとbyte[]からString
にもどすときはStringのコンストラクタ使う。
 でもさ、474のやりたいことは、多分こういうことじゃないと
思うけどね。
480デフォルトの名無しさん:04/09/01 21:13
ちょっとやりたいことが明確になってないので書いて見ます

切り分ける元の文字列はネットワークから取得してきたString

単純にsunstringすると30文字取ってきてしまうのでアレ

byteで30byte取ってくる、マルチバイト文字列が入っていても可能でなければならない

メソッドからreturnするときはString型で返したい。


ってな感じなんですけども。。。
まあおそらく日本で主に使われている環境でいわゆる半角文字を30文字
拾ってきたいってことなんだろうなあ。手抜きするならShift_JISに
変換して自前で切り分け処理だろうけど、ちゃんとするならICUかな。
482デフォルトの名無しさん:04/09/01 21:20
>>478
元のデータの文字コードは気にしなくていいのか?

byte[] sbyte = str.getBytes("エンコーディング入れる");
byte[] pbyte = new byte[(e - s)];
for (int i = s, j = 0; i < e; i++, j++) pbyte[j] = sbyte[i];
return new String(pbyte, "エンコーディング入れる");

だいたいこんな感じ。
アプレットを使っていて、JDK1.4.2_05にバージョンアップしたら
java.security.AccessControlException: access denied (java.lang.RuntimePermission charsetProvider)
とエラーが発生するようになりました。
どうしたら解消しますか?
ご教授お願いします。
484474:04/09/01 21:30
ありがとうございました!!!

>>478様のソースで完璧に問題なく動きました

ちなみにエンコーディングはサーバーで処理するんで考えなくても大丈夫です。。。

みなさまありがとうございました。
>>484 30byte目がマルチバイトの1バイト目だったらどうするとかなんも考えてないのね。
まあ474の視点で問題ないならいいや。
486474:04/09/01 21:37
サーバー処理で30バイト目にはマルチバイトの1文字目は来ない設定でやってるので大丈夫です

度々説明が足りませんでした、、、とにかくありがとうございました!
487デフォルトの名無しさん:04/09/01 22:45
なんで Swing の入力検査ってイベントじゃないんですか?
JComponent#setInputVerifier(InputVerifier iv) で入力検査を実装できますが、
なぜ JComponent#addInputVerifyListener() のようにしなかったのでしょうか?
イベントになっていないからだと思いますが、ほとんどの IDE の GUIエディタが
この入力検査のスケルトンを吐いてくれません。めんどくさいです。
>>487
バグパレードにRFEよろ。
まぁ1.3から導入と言うところからして完璧後付だし、
setなのでプロパティのところで簡単に出来るだろ
490デフォルトの名無しさん:04/09/02 02:17
iアプリですが、低レベルAPIでgifアニメの使用はできますか?
491デフォルトの名無しさん:04/09/02 06:45
おまいぐらい低レベルだと無理
492デフォルトの名無しさん:04/09/02 06:53
>>490
すれ違い

【初心者歓迎】iアプリ相談室
http://pc5.2ch.net/test/read.cgi/tech/1089530578/
byte配列 byte[] をStringに変換するには
どうすればいいのでしょうか?

初歩的な質問ですいません。
>>493
String a = new String( bytes[] );
>>494
ありがとうございました

あと一つ申し訳ございませんが
byte[]として作った配列の長さを調べるにはどうすればいいのでしょうか?
Byte[] by = strbuf.toString().getBytes();
としてbyte配列を作ったとしても、そのbyte配列の長さがわかりません。
Stringの文字列とは異なる部分が出てくるはずですから。
>>495
int len = by.length

Javaを初めから勉強し直せっていうか、勉強中?
Java関連の本とか読んでないのか?
>>496
ありがとうございました
助かりました
498デフォルトの名無しさん:04/09/02 12:35
Java関連の質問ということでここに書きます。

Java歴7年、2ch歴1年の中年オヤジです。
なぜ、2chでは Null Pointer Exception.(ぬるぽ) が流行っているのですか?
IE経由で見ても、アプレットやJSPを使っている気配はないし、
2chブラウザ?でも、Javaでできているものはなさそうだし。

それに、こんなに多くの人が集まる2chで
Javaプログラマーがそんなにいるとはとても思えません。

2chを見ていれば、いつか分かると思って一年。
結局疑問は深まるばかりでした。
調べもしないでだまーって待ってたんだ。
歴が長くなるだけで無能な人なんだろうな。
500デフォルトの名無しさん:04/09/02 12:41
ぬるぽ
>>498
マ板で聞け
>>499
無駄な知識は増えました。

プログラム系のスレの特徴は書き込みを見て、
あなたみたいに技量をプロファイリングする人が多いです。
これは、他の板には少ない大きな特徴です。
人付き合いが下手で理屈っぽい人が多いという、
プログラマーの傾向がよく出てます。
>>501

有り難うございます。
行ってきます。
>>502
プロファイリングというのは>>502のようなやつですか。
505デフォルトの名無しさん:04/09/02 13:00
ぬるぽ
なんか使ってる奴は童貞でハゲ
1年も見てて板違いな質問をするとは・・・
>>502
あなたも相手をプロファイリングしてるということで、人付き合いが下手で理屈っぽいプログラマーの傾向がよく出てるわけですね。
調べずに板違いな質問をし、自分のレスで自爆するおじさんがいるスレはここですか?
509デフォルトの名無しさん:04/09/02 14:43
いま流行りはArithmeticException
510デフォルトの名無しさん:04/09/02 16:21
eclipseの動作が重すぎて使えません。
ちなみに3.0なんですが他に軽いのはないものでしょうか?
511デフォルトの名無しさん:04/09/02 16:26
メモ帳
512デフォルトの名無しさん:04/09/02 16:26
vi
513デフォルトの名無しさん:04/09/02 16:33
>>511,512
ですよね…。
>>510
自分で作っちゃえ
>>513
マシンの増強は選択肢に無しか?
516510:04/09/02 16:58
>>514
プログラムも初心者なもので。

>>515
お金がないんです。
>>516
初心者ならエディタ+javacで頑張るのもいいんじゃないかな。
519518:04/09/02 17:16
http://java.sun.com/j2se/1.4.2/ja/download.html

これを忘れてた。NetBeans
>>519
netbeansも重いじゃん
eclipse が重い? バカ言うなって。
eclipse が重いってことは、作成したプログラムも重いってこった。
素直にパソコン買い替えとけ。
たぶんwin32ネイティブも最近のアプリならヘビーすぎてきついだろうな
もちろんIEは3までだよな
>510
DevBoosterつーのがあるぞ。なかなかいい。
524510:04/09/02 19:46
>>517

初めはそれで頑張らないと勉強にならないっていうのも見たんですけど、
やっぱりエディタでしこしこ書くのは辛いんですよね。まあそんぐらい頑張れって話なんですが。

>>518

有り難うございます。試してみます。

>>520

netbeansも重くて無理でした。


525510:04/09/02 19:47
>>523

有り難うございます。早速調べてみることにします。
メモリぐらい差せ。
NetBeansは192MBからだぞ。使えるのは。せめて128MB。
ただ、メモリ128MBあって重いといってるなら、我慢して使え。

補完もないエディタでしこしこと無駄な努力するのは、べつにJavaの勉強にはならないよ。
javacでコンパイルも、コマンドプロンプトの勉強にはなるだろうけど、あまりJavaの勉強とは関係ない。
使うライブラリをちょっと増やすとjavacはめんどくさくなるし、antは初心者が最初から使うにはどうかと思うし。

単純な入力ミスで悩むなら、補完やエラー表示のあるエディタ使って、他のことで悩む方が有意義。
527510:04/09/02 20:16
>>526

確かに…。入力ミスで何回か悩んだ事あります。

ちなみにメモリは64MBです。終わってます。
>>527
窓から投げ捨てて新しいマシン買え
もしくはエディタで我慢しろ
eclipse 3は2に比べてけっこう重いと思う。
少しの間だけど反応なしに陥るときがしばしばある。
結局2に戻した。
メモリは256MB
530デフォルトの名無しさん:04/09/02 20:37
3を今使うことないじゃん
マイナーバージョンがあがるまで待とう
>>529
NetBeansはバージョンあがるたびに軽くなるのにね。
NetBeans4も、なんとなく軽くなった気がする。
532デフォルトの名無しさん:04/09/02 22:13
>>529
Eclipseには将来IBM JDKが搭載されるらしい。
けど、3.0で何を使ったら重たいのだ?
533531:04/09/02 22:17
念のため補足しておくけど、入力のレスポンスは、NetBeansは仕組み的にEclipseには敵わないけどね。
>>532 もうIBM JDK抱き合わせのeclipse、配布始まってるよ。
NetBeansって内部で独自のイベント回しだっけ
あれなくなればかなり早くなるのになぁ
SwingのシステムLAFになった3.6はだいぶいいやね
J2SE5のネイティブLAFで動かせばどうなるか激しく気になるけど

536デフォルトの名無しさん:04/09/03 02:02
質問です。
アプレット上からディスク上にファイルを出力しようと試みたんですが、
アクセス権限エラーが発生してうまくいきませんでした。
調べた結果、ポリシーファイルをクライアント上に用意されてあるらしく、
それにアクセス権限を追加し、うまくいきました。
問題は、JavaScriptからアプレットを呼び出したときのみ、
なぜかうまくいきません。これは、仕様なのでしょうか?

537デフォルトの名無しさん:04/09/03 02:07
Apache+TomcatでWebサーバーを構築しています。
なんとかFullGCを起こしたいのですが良い方法はありませんか?
タブ区切りのテキストファイルの、例えば Matrix.txtで
ab
11001
21002
31003
... ...

を配列形式で
[a][b]
[1][1001]
... ...

と読み込むにはどうすればいいでしょうか?
最終目標は、1+1001,2+1002,...と計算させたいと思っています。
※縦長ですみません
539デフォルトの名無しさん:04/09/03 07:23
テキストを一行ずつ読み込んで
java.lang.String#split(regex);
で切ればいいんじゃね?
>>529
それは俺も強く実感した。
P3 866MHz Mem256MByte のマシンに
Eclipse 3 を入れてたとき。
お前らPC買い換えろ。IBMの最新のに。
542デフォルトの名無しさん:04/09/03 10:56
>>538

ライブラリーの StringTokenizer がお勧め。
google 検索すれば、解説サイトがいっぱいHitするから。
543510:04/09/03 10:58
>>523

DevBooster軽かったです。しばらくこれを使ってJavaの勉強をしてみようと思います。
>>535
激しく気になるなら試せと・・・
まだRCだからなんとも
java.lang.Voidってなん?なに?なぜ?java.lang.Nullはなくて?
戻り値なし(返値の型がvoid)のメソッドをリフレクションで扱うときに、
java.lang.reflect.Method#getReturnType()が返すくらいかな。
>>538,>>542
勝手に作ってみたw

import java.util.*;
public class StringToken{
public static void main(String[] args){
String[] str=new String[]{"a\tb","1\t1001","2\t1002","3\t1003"};
String[][] matrix=new String[3][2];
int i=0,j;
StringTokenizer st;
for(i=0;i<3;i++){
st=new StringTokenizer(str[i],"\t");
for(j=0;j<2;j++){
if(st.hasMoreTokens())matrix[i][j]=st.nextToken();
}
}
for(i=0;i<3;i++){
for(j=0;j<2;j++){
System.out.print("(i="+i+",j="+j+")["+matrix[i][j]+"] ");
}
System.out.print("\n");
}
}
}
549548:04/09/03 19:58
Split版作って試してみたら、自宅PCはJ2sdk_1.3だった。。。_| ̄|○
>>545
それでも、激しく気になるのなら試せ、と。
そして結果を教えてくれ。w
551デフォルトの名無しさん:04/09/03 23:25
>>538
たぶんStringTokenizerを使わなきゃもっと短くなるはず。
がんばって5行にしてくれ。健闘を祈る。(違

import java.io.*;import java.util.*;class z{static public void main(String[]a)
throws Exception{File f=new File(a[0]);byte[]b=new byte[(int)f.length()];new
FileInputStream(f).read(b,0,(int)f.length());StringTokenizer t=new
StringTokenizer(new String(b),"¥t¥n");String[][]c=new String[(t.countTokens()/2)
][2];int[]x=new int[2];for(int i=0,j;t.hasMoreTokens();i++){for(j=0;j<2;j++){
c[i][j]=t.nextToken();x[j]=Integer.parseInt(c[i][j]);}System.out.println(x[0]+
"+"+x[1]+"="+(x[0]+x[1]));}}}
>>551
win対応で StringTokenizer t=new StringTokenizer(new String(b),"\t\r\n");
553デフォルトの名無しさん:04/09/04 04:13
>>551
6行w

import java.io.*;import java.util.*;class z{static public void main(String[]a)
throws Exception{File f=new File(a[0]);int i=0,j,l=(int)f.length();byte[]b=new
byte[l];new FileInputStream(f).read(b,0,l);StringTokenizer t=new StringTokenizer
(new String(b),"¥t¥n");String[][]c=new String[(t.countTokens()/2)][2];int[]x=new
int[2];for(;t.hasMoreTokens();i++){for(j=0;j<2;j++){c[i][j]=t.nextToken();x[j]=
Integer.parseInt(c[i][j]);}System.out.println(x[0]+"+"+x[1]+"="+(x[0]+x[1]));}}}
554546:04/09/04 05:18
>547
java.lang.reflect.Method#getReturnType()なるほど
リフレクションっての理解に時間がかかりました。もう5時です。
これってすさまじくないですか?いやー聞いてみるものでした。すんばらしい情報ありがと
おもしろくて試しに色々やっちゃいましたよ。結論は多用すると地獄ですが
これ以外に利用法ないです?さらっと探すとないんだけど、もしVoidってこれだけの為にあるの?
さてもう5時です。
>>523 >>543
あの吐き気がするほどのセンスの悪さに耐えられるなら
こんにちは

AWTにCanvasがありますよね
このCanvasをJPanelにaddして、そのJPanelをJScrollPaneにsetViewportViewしたんですが、
スクロールさせると、スクロール範囲外にもCanvasの内容が描かれてしまいます。

Graphicsクラスを使い描画できるSwingのクラスのクラスはないのでしょうか?
おそらく、AWTとSwingとがかみ合わないからだと思うのですが。
557556:04/09/04 10:06
//JPanel
jP = new JPanel();
jP.setPreferredSize(new Dimension(1000,1000));
jP.setBackground(Color.BLUE);
jP.setLayout(null);

//Canvas関連の初期化
mc = new MyCanvas();
mc.setBounds(100,100,200,200);
mc.setBackground(Color.CYAN);
jP.add(mc);

//JScrollPane関連の初期化
setViewportView(jP);
558デフォルトの名無しさん:04/09/04 10:29
>>556
普通にJPanelに描画できるよ
CanvasのかわりにJPanel使えばOK
>>539
そんなやり方するんだったらStringTokenizer使った方がいいかと思われ。
ガイシュツだった
561556:04/09/04 10:54
>>558
ご返答ありがとうございます

JPanelからgetGraphicsでオブジェクトを取り出し描画したんですが、
NullPointerが発生してしまいます。
どうしてなのでしょうか?

Graphics g;
g = jP.getGraphics();
g.drawLine(10,10,100,100);
562デフォルトの名無しさん:04/09/04 11:06
>>561
Graphicsは、paintComponent()のの引数からとる。
JPanelはサブクラス化しないとダメだよ。
>>556
JComponent
564556:04/09/04 12:33
>>562
ご返答ありがとうございました

解決しました。
初歩的な質問に答えていただきまして
本当にありがとうございました。
>>546

似たようなところでは、Integer.TYPEみたいなのがある。

Class#getMethodでMethodオブジェクトを取ってくるときは
同一名で型の異なるメソッドを区別するために引数の型
を表すClassの配列をあたえてやるわけだけど、このとき、
int foo(int i)とint foo(Integer i)を区別するために、
それぞれ Integer.TYPE と Integer.class を使う。

TYPEを使うのはそれくらいかな。voidは引数になりようが
ないので、返値の型くらいでしか需要はないです。
566デフォルトの名無しさん:04/09/04 18:27
すいません、質問です。
Java Beans の PropertyEditorSupport クラスを継承する形でプロパティエディタを自作しています。
getCustomEditor() を使って GUI エディタを表示させるところまではできたのですが、
ここで変更した値というのはどうやって呼び出し元に戻せばいいのでしょうか?
firePropertyChange 使っても何故か反映されない・・・。

テスト環境は NetBeans 3.6 です。よろしくお願いします。
567デフォルトの名無しさん:04/09/04 18:54
>>566
PropertyChangeListenerを登録しる
568デフォルトの名無しさん:04/09/04 21:02
すいません、質問いいですか?
前にディスプレイデバイスが破損して修復した後から
アプレットが表示されなくなってしまいました。
sun javaを入れたり、設定はすべてあわせたのですが
全然直らないし何が原因なのかさっぱりです。

ちなみに東芝、ダイナブックの
動作環境がwinMEのIE6です。
うん、なんていうか板違いだよね。
すいません、スレ違いでしたか…。
571デフォルトの名無しさん:04/09/04 21:20
>>567
レスどうもです。

結局のところ PropertyEditorSupport クラスを継承したクラスの中に(内部クラスとして)
カスタム GUI を実装してそれを getCustomEditor() で返す、っていう手を使ったら
上手くいってしまったんですが、どうなんでしょう、、、
なんか根本的な解決になってないというか、、、。
Javaほどプログラミングしやすいものは見たことがない。
すごいよJavaは。
573デフォルトの名無しさん:04/09/04 22:09
RMIで教えてください。
codebaseをftpにて定義したいのですが、この場合ユーザ名、パスワードを指定して
URLを記述することは可能ですか?
また、クライアント〜サーバ間にて異なる物理ディスク環境の場合、http以外だと
どのような手段がよいでしょう?
574デフォルトの名無しさん:04/09/04 22:10
StackTraceの読み方がわかるサイトってありませんか?
だーっと出てくるけど、何のことかサパーリわからないので。
あれがわかるとデバッグがやりやすくなるんでしょうか?
読み方もなにも、
Exception in thred "スレッド名" 例外クラス名: 例外メッセージ
at 例外が発生したクラス名.メソッド名(それを含むファイル名)
at ↑を呼び出したクラス名.メソッド名(それを含むファイル名)
at ↑を呼び出したクラス名.メソッド名(それを含むファイル名)
...(以下繰り返し)
だけだろうに。
>>575
それはそうなんですけど、それをデバッグにどう生かしたらいいかが
よくわからんですよ
>>576
デバッグっていうか、何がどこで起こってるかわかるだけ。
578538:04/09/04 23:51
> タブ区切りのテキストファイルの、例えば Matrix.txtで
a b
1 1001
の質問でしたが、542のカキコがあった時点で StringTokenizerクラスの
nextToken()を使って書いちゃいました。
 
539,542,548,552,553,554 さん、ありがとうございました。
579一流プログラマー:04/09/04 23:54
ヴぉけども!MSの仕組みさえわかればなにもダッシュだろが!!
580デフォルトの名無しさん:04/09/05 00:28
>>572
逆に言えば、最近になってようやく使える言語ができたって事で
振り返ってみると、これはちと驚きだな。
JAVA自体もようやく使える形になったのは1.2からだし、それまでの
主流言語はなんとC++。 しかし、STLは1999年前後にようやく
正式登録されてるという始末。
大昔から星の数ほどプログラミン言語は存在してるのに、まともなのは
全然ないとは、やっぱり有志や研究所で作るのはダメで、それが即
利益に直結するような営利企業が作らないとダメって事なのか。。。
>>580
Javaがその時期にでてきたのは基礎理論の発展によるだろが。
同じような時期から、Rubyなど、個人が作った使える言語も増えている。
もちろんある程度の市場性を持って使い物になるためには営利企業主体である必要があるわけだが、それは当たり前の話だ。
会社の生死にかかわるからなぁ
>>581
オブジェクト指向言語の実用化は、1997〜8になってようやく完成されたと
いう事なのだろうか。
海外じゃsmalltalkは結構メジャーだったとはいえ、JAVA登場以前の
OOPでもっともメジャーだったのは、結局エセOOP言語のC++だった。
プログラミング言語の発達は想像以上に遅いな。
>>583
言語の前に、コンポーネント技術の壁の方が大きかったのではないかと。
>>583
自分がメジャーになってる言語しかみてないだけ
>>577
場所を確かめてくしかないってことか
ありがと
>>586
そんなことは言ってない。
デバッガ使え。
>>585
メジャーになってない言語はうんこ。自己満足でしかない。
>>588
言語をメジャーにして金儲けするのは自己満足ではないのか?
言語談義はスレ違いです(はぁと
591538 & 578 です:04/09/05 05:56
再びアドバイス願います。
 例えば次の5個のファイルと、その中身が
Txt1.txt 中身:12 34
Txt2.txt 中身:56 78
Txt3.txt 中身:90 12
Txt4.txt 中身:34 56
Txt5.txt 中身:78 90

となっていたとき、それぞれの中身の足し算を
12+34=46
56+78=134
...

となるように、ファイル単位で連続して行うにはどうすればいいでしょうか?
(ファイルの個数だけインスタンスを発生させるという考え方でいいので
しょうか?)
>>591
なんのインスタンスを発生?させるつもりだ
インスタンスは発生するもんじゃないし。
593デフォルトの名無しさん:04/09/05 07:25
>>593
そんなに揚げ足とるなよ
生成と書きたかったんだろ

>>592
それでいいけど、Javaでやる意味がないんじゃない?
なんかのスクリプト使えば?
たとえば、awkならこんな感じ

#!/usr/bin/awk
{print $1 "+" $2 "=" $1 + $2}

使い方は
awk -f add.awk Txt*.txt
594デフォルトの名無しさん:04/09/05 08:53
>>573
FTPのURIにユーザ名とパスワードを含める書式はこんな感じ。

ftp://yourname:[email protected]/pub/

でも、JavaのライブラリってFTP対応してた?
>>593
揚げ足というか・・・ケアレスミスじゃないだろ、明らかに。
どうみても、インスタンスあたりの理解不足だ。
勝手にファイル数分繰り返せっちゅうねん。
596573:04/09/05 09:47
>>594 そうなのです、その書式だとExceptionが・・。
どなたか、RMIでcodebase指定をftpでやった人いません?
やっぱanonymousでしょうか。。
597591(538&578 )です:04/09/05 11:12
正規の表現では「インスタンスの生成」ですね。失礼しました。

>>593
スクリプトて「シェル・スクリプト」のスクリプト?聞いたことはあります。
ところで「awk」って何ですか? Googleで調べる際には「スクリプト awk」
十分ですか?
僕が理解できる範囲のものであれば、awkとやらでやってみます。
598597への追加:04/09/05 11:17
でもやっぱ、Javaで収まるならそうしたい。
>>597
つうか、キーワードわかってるなら調べろよ、と。
ていうか、勝手にファイル数分繰り返せと。
600デフォルトの名無しさん:04/09/05 12:31
>>597
別にawkを使えっていってるわけじゃないよ
perlでもrubyでもすきなもんを使えばいいけど
例えばperlなら
#!/usr/bin/perl
while(<>) { ($x, $y) = split; printf "%s+%s=%s¥n", $x, $y, $x+$y; }
って感じでスクリプト系だとお手軽でしょ
決まった形式のデータを足し算したいだけならこれで十分かなという話
>>591
import java.io.*;
public class ReadAndCalc {
public static void main(String[] args) throws IOException {
for (int i = 1; i <= 5; i++) {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("txt" + i + ".txt"), "utf-8"));
try {
String[] array = in.readLine().split("\\s+");
System.out.println(Integer.parseInt(array[0]) + Integer.parseInt(array[1]));
} finally {
in.close();
}
}
}
}
String[] array;
try {
System.out.println(Integer.parseInt((array = in.readLine().split("\\s+"))[0]) + Integer.parseInt(array[1]));
} finally {
in.close();
}
行数は変わらんな
try {
String[] array;
System.out.println(Integer.parseInt((array = in.readLine().split("\\s+"))[0]) + Integer.parseInt(array[1]));
} finally {
in.close();
}
今日暇なんだよ
604デフォルトの名無しさん:04/09/05 12:48
>>601
try節不要だからとっぱらっていいよ
>>604
try節ごととっぱらっていいのか?
>>604
イヤン
607デフォルトの名無しさん:04/09/05 15:26
>>598
> でもやっぱ、Javaで収まるならそうしたい。
Javaでawk, PerlやRubyと同じことをしたければ
Jakarta OROを使うことをおすすめしまする。
>>605
try節内で強制終了を起こすような事態もおこりえないのに
try-finallyをやっているからいらんということで。

try-catchが本当に必要かどうかはEclipseとかを
使って調べることをお勧めする。
Eclipse3.0の設定でどういうときに警告を出すかを簡単に設定できるので
それを使ってtry-catchが必要かどうかを判断できる。
必要がなければそこに黄色い波線が現れる。
到達不可能な例外、起こらない例外などを警告してくれる。
>>607
標準のじゃだめなんか?
それに、勧めるならGroovyの方が。
>>608
例外が発生しないからといって、try節ごと取り除いて処理を省いてもいいものか。
611デフォルトの名無しさん:04/09/05 15:52
>>608
そうじゃなくて元のプログラムが
throws IOExceptionを定義してるから
いらないだけ
612546:04/09/05 15:55
>>565
またもや仰られた事への理解に時間がかかりました。関心させられるばっかりで、奥が深い。
教えるのうまいね夢中で調べちゃったよ、全てをObjectとして表現でるぜjavaすげー、考え方が広くなった、ありがとう

俺java厨してる?危険?

java.langパッケージってすごい洗練されてんですね。興味がとまんねーのでここから出直してきます。
>>608
BufferedReader#readLine()でIOException起こるよ。
あとRuntimeExceptionも。
throws IOExceptionを外しましょう、と
外したら自分で例外処理かかなきゃなんねーべ
あほか、finallyは要るだろうが。
>>601のtryブロックが何のためにあるのかも理解してないな。
こういうやつが例外セーフでないコードを書くわけだな。
finallyは例外処理とはいいません。でも必須
619597への追加:04/09/05 17:38
600, 601, 602, 603, 604, 605, 606, 607, 608
609, 610, 611, 613, 615 さん有難うございました。
(人名重複の際はご容赦下さい)

無事、希望通りの計算結果が出ました。ただし、当方はJava2(SE)1.3を
使用していますので、split()は使えず、代わりにnextToken()を使いました。

なお、try-finally は付けたままにしておきました。

重ねて御礼申し上げます。
                        |
       ____.____    |
     |        |        |   |
     |        | ∧_∧ |   |
     |        |( ´∀`)つ ミ |
     |        |/ ⊃  ノ |   | 1.3
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |
                        |
Javaって例外が発生したら問題がおこるプログラム書くのが普通なのか?
throwsあるからtry自体要らないって発想が危ないと思うが。
throwsあるからcatchは要らないならまあまだ分かるが。
622デフォルトの名無しさん:04/09/05 18:11
スコープ内で開いたファイルディスクリプタは
スコープ抜けたら自動的に解放されますが?
>>621
ってか、こんな使い捨てプログラムで例外発生しても、問題なんか起こらない。
スコープ抜けるが参照がなくなるの意味ならいつかはね。
>>622
この場合のスコープとはなんですか?
この場合のファイルディスクリプタとはなんですか?
>>621
使い捨てじゃないプログラムを書いたときに改めて問題になるだけ。
こんなやつは腐るほどいる。

ここまでの流れで、使い捨てだから問題ないという理解に見えたか?
俺には使い捨てだろうが重要なプログラムだろうが関わりなく「不要だ」にみえたが…
>>626
> 使い捨てだろうが重要なプログラムだろうが関わりなく「不要だ」にみえたが…

極端なやつだ。
628601:04/09/05 18:41
誰かまとめろよ
629デフォルトの名無しさん:04/09/05 18:42
ようするに、使い捨てだろうが何だろうが全力投球のコードを書けということだな
おまえのいうことはわかったよ
俺は使い分けるけどな
>>628
例外処理は、作るものの性質によって使い分け。
以上。
ちげーよ。
使い捨てだったらそんな処理要らんて書くんなら、
ちゃんと「使い捨てだから不要なんだ」ってことが分かるようにかけよってこった。
誰が常に全てを考慮せにゃならんて書いた?

>>627
これに関しちゃ、>>621の言ってる内容についてじゃなくて、
これまでの>>604-611辺りの話について書いてるんだよ。

どう読んだって、「今回は使い捨てだから気にしなくていい」って話じゃないだろ。
どう考えても、一般的な話としてこのコードならtryは不要だって書いてるだろ。

これを読んだやつがどう理解するかといえば、
throwsで列挙してる例外はcatchしなくていいからtryは不要だってなってしまうんだよ。
同意
633デフォルトの名無しさん:04/09/05 19:07
リフレクションを使い、Class型のオブジェクトから
public static finalで宣言されているフィールドの値を
とってくることはできないでしょうか?

Class cl=getClass();
Field publicField=cl.getField(PUBLIC_STATIC_FINAL_FIELD_NAME);
String str=(String)publicField.get(cl.newInstance());

のようにnewInstanceを使えばもちろんとってこれるのですが
staticなフィールドはインスタンスを生成しなくてもとってこれる
フィールドなので、何か腑に落ちません。
newInstanceを使わないでとってくる方法はないのでしょうか?
>>631
そんなもん処理による。
>>633
null渡せばいいの。
636633:04/09/05 19:20
633ですが633の質問にちょっと関連した質問を・・。
実は、633は
ServletのFilterでリクエストされているサーブレットの
特定の名前で宣言されている
public static finalなフィールドの値を読み
その値によって動作を振り分けるというようなことをしているのですが
この、そもそもリクエストされているサーブレットのClassを特定し
Class型のオブジェクトを生成するところもちょっと苦労しています。。
現在はConstantクラスで
/** Servletマッピングパス */
public static final String SERVLET_MAPPING_PATH = "/servlet/";
と宣言しfilterクラスで
Class cl = Class.forName(request.getServletPath().replaceFirst(Constant.SERVLET_MAPPING_PATH, ""));
とし、
http://DOMAIN/CONTEXT-PATH/servlet/foo.bar.Baz
といったurlでfoo.bar.Bazをとりだす。。。といったことをしています。
これだと、マッピングが完全修飾クラス名であることが制限となってしまい
やはり腑におちません。
いろいろ調べたのですが完全修飾クラス名そのものずばりを取得する方法が見つかりません。。。
デバッグでしらべるとdoFilterでわたされるFilterChainの中の
servlet.servletClassに格納されているようですが・・・それを取り出す手段。。。ってことになるとおもうのですが。。
解決策ご存知の方ご教授ください
637633:04/09/05 19:23
>>635
あ・・・!そうか!
nullを渡したところできました。
ありがとうございます。
>>636
まずその設計をなんとかしろ
>そんなもん処理による。
んなこた分かっとるって何度言ったら…
640633:04/09/05 19:31
>>638
すいません。。(汗
こういうのはやはり外部ファイルに書き出す、、、とかでしょうか。
641デフォルトの名無しさん:04/09/05 19:36
>>639
おこりんぼさんね
ウフフ
643デフォルトの名無しさん:04/09/05 19:40
>>640
URLとサーブレットのマッピングはweb.xmlでやれるだろ?
なんでそんなことやってんの?
644633:04/09/05 19:50
>>643
>>633をやりたいからなんですね。。
もっとぶっちゃけていってしまうと
対象のサーブレットには
使用するフォームビーンクラスが宣言されていたりします。。
(ここも「その設計なんとかしろ」といわれそうだ・・・)
public static final Class FORM_CLASS = FormSearch.class;
みたいな。。で、これをとってきて
filterでフォームビーンを構成して。。みたいなことをしてます。
strutsだと既に用意されているようなことだとおもうのですが
(strutsは使ったこと無いので詳しくはしらないのですが)
strutsを使えない事情もありまして。。。
strutsだとstruts-configとかで設定するんでしたね、、
そうしろってことかなぁ。。。
645デフォルトの名無しさん:04/09/05 19:53
>>644
Strutsは違うよ
Strutsの場合は単一のServletで受けてから振り分けてる
そうした方が楽だよ
リフレクションのことは忘れて一から設計しなおせ
647633:04/09/05 20:01
>>645-646
自分もそうしたいのは山々なんですが・・。
実はこのプロジェクトには後から入りまして、、
ソースを見て「なんじゃこりゃー」と叫んでしまいました。
フレームワーク的な考えは一切なく各々のコーダーが
各々のやり方でコーディングしていてValidationなんかもしてなかったのです、、、
struts導入を提案しましたがあえなく却下され
(これは私の知識と経験不足のせいですね)
自分は今のソースになるたけ影響を与えずにフレームワーク的なものを
導入することを許されたのみでした。。。
幸運なことにFilterには手を付けていなかったようなので
そこを拠点になんとかいろいろやろうと奮闘しているという状況だったりします。
自分自身もJavaは2ヶ月程度の経験なのでどこまでやれるかわかりませんが。。
648デフォルトの名無しさん:04/09/05 20:03
>>647
サーブレットからサーブレット呼ぶのは簡単だよ
ひらめいた?
大変なのはわかったが混乱に拍車をかけようとしているように思える。
まぁ頑張れ
650633:04/09/05 20:12
>>648
RequestDispatcher経由で取れるかな・・と
言われて今調べましたが。。。
うーんそれっぽいメソッドは無いですね。。。
includeしちゃう、、とか。。?
651デフォルトの名無しさん:04/09/05 20:20
リフレクションから離れろって、、、、
652デフォルトの名無しさん:04/09/05 20:24
そもそも自分でサーブレット作ってもServletContextはどうすんの?
コンテナ管理されてるものに手を出しちゃダメだよ
>>619
2chでいちいち面倒くさそうなお礼レスを返すとは
お前も暇人やなー。
フィードバックだけしときゃええってのによ
>>621
藻前は例外の極意がまだわかってない。
例外でテクニックを検索せよ。
Javaの鉄則、格言、とかの本嫁
655デフォルトの名無しさん:04/09/05 22:07
>>631
そもそもmain()上で動かす時点で例外処理はいい加減でも構わない。
Servlet, JSPにしてもブラウザに表示する部分で
下手にcatchしてprintStackTrace()されても
お客さんに「なんだこれは!? Tomcatのログに何かエラーメッセージがでているぞ! 早急に直してくれ!」
といわれるのがオチ。下手にthrowsとかthrow new とかするとそれをどうにかしろと言われ徹夜が続く。

顧客の為にif文とかを使ってcatch節のなかでわざとreturnするとか、わざとcatch節を空にするということはよくある。
とくに、
そのクラス事態がJSPにforward/redirect転送せずその場でブラウザに出力するServletやJSPや
main()メソッドのように外部から参照され依存されることがないときは
ユーザインターフェース部分は仕方が無くそうするケースがある。

さすがに内部のロジック、依存元クラス、フレームワーク、ライブラリ、Modelの開発ではそういう酷いことはしないが。

JSPの画面遷移で、入力フォームをセッションやパラメータで渡すときはちゃんとcatch節に
エラー、例外、ログ情報をため込んでセッションに入れておくが。
656デフォルトの名無しさん:04/09/05 22:07
「独習java」の最初の例題をコマンドプロンプトを通じてしようとしたのですが、
j2sdkのbinのサブディレクトリのパスの通し方を忘れました
親切な方教えてください
657デフォルトの名無しさん:04/09/05 22:13
>>636
> 633ですが633の質問にちょっと関連した質問を・・。
> 実は、633は
> ServletのFilterでリクエストされているサーブレットの
> 特定の名前で宣言されている
> public static finalなフィールドの値を読み
> その値によって動作を振り分けるというようなことをしているのですが
> この、そもそもリクエストされているサーブレットのClassを特定し
> Class型のオブジェクトを生成するところもちょっと苦労しています。。
> 現在はConstantクラスで
> /** Servletマッピングパス */
> public static final String SERVLET_MAPPING_PATH = "/servlet/";
> と宣言しfilterクラスで
> Class cl = Class.forName(request.getServletPath().replaceFirst(Constant.SERVLET_MAPPING_PATH, ""));
ここでgetServletPath()とするところがあれだな。
URLを取り出したければ
request.getContextPath()を使うだろ普通。
getServletPath()ではサーバ上の絶対パスを拾ってしまいドメインがとれんぞ。
getContectPath()を使えばいちいちString#replaceFirst()つかう必要もなくなるぞ。

>>650
> >>648
> RequestDispatcher経由で取れるかな・・と
> 言われて今調べましたが。。。
> うーんそれっぽいメソッドは無いですね。。。
> includeしちゃう、、とか。。?

おい、forward()はどうした。
sendRedirect()でもいいが、パラメータ渡せないな。
getURL()とかなかった?
>>656
>>1のリンク先wikiを読んだか?
>>633がやりたいことは

ただのリンク張りか?

だったら
request.getContextPath() + / + web.xmlで指定したディレクトリ名とか + サーブレット名

で十分。ドメインなんていらない
あとはweb.xmlをどうするか。
662takka:04/09/05 22:21
はじめまして。質問させていただきます。

ウィンドウ操作中にエラーメッセージボックスを表示させます。
エラーメッセージボックスはモーダルダイアログとします。
エラーメッセージボックス表示中、ウィンドウにマウスカーソルを
当てると、マウスカーソルが待ち状態(砂時計)表示になるとします。
でも、Windowsの場合はマウスカーソルが待ち状態(砂時計)表示になりませんでした。
HPやSolarisといったUNIXではマウスカーソルが待ち状態(砂時計)表示になります。
なぜでしょうか。
OSの仕様なのでしょうか。
>>644
なんでgetClass()を使うんだか。getName()にすればええんでは。
あとはjava.lang.reflectを使って(ry
664デフォルトの名無しさん:04/09/05 22:21
>>662
ロギングAPIかJakarta Log4j, AspectJでログを取れ。
665633:04/09/05 22:23
>>658,661
いや、、、
最終的には単に
chain.doFilter
しちゃうのです。
そのまえにFormBeanのクラスをとってきて
FormBeanをリクエストのパラメータから自動構成して
(ここでValidationもやっちゃうValidationがNGだったら共通入力エラーjspにforwardする)
setAttributeで構成されたFormBeanオブジェクトをセットして
サーブレットではそれをとりだすだけ。。ってなことをやりたいのです。。
いまさら気づいたんだが、>>626>>631で書いてる、
>>621ってアンカーは、>>623の間違いだった…orz
>>665
> >>658,661
> いや、、、
> 最終的には単に
> chain.doFilter
> しちゃうのです。


全然pathとか関係ない話じゃないか
668デフォルトの名無しさん:04/09/05 22:32
>>654例外の極意
おしえてくれ〜
669デフォルトの名無しさん:04/09/05 22:37
Javaの例外はSleep(30000)の代わりに使える。
勉強になりますた。
JavaをWindowsの実行ファイルにする、フリーソフトありませんか
jet
gjc
jetってすげー高ぇ〜・・・
こんなの買うならJBuilder買った方が(ry
674デフォルトの名無しさん:04/09/05 23:58
>>671
run.batというファイルを用意し、
テキストエディタにこう記述する


java クラス名


はいこれでダブルクリックするだけでできあがり
675デフォルトの名無しさん:04/09/05 23:59
>>671
jarで圧縮するときマニフェストファイルを含め
ブートストラップクラスを記述し

拡張子exeで圧縮する。
これでWindows実行ファイルに早変わり。
ダブルクリックするだけで実行できます
ファイルからの読み込みで、読み込むテキストには"|"でくぎってあり数字や文字列が書いてまります。
それらを抜き出して新しいテキストファイルをつくりたいんですが
String tokenizerをつかってnextTokensでそれぞれを取り出した時、
取り出した数字や文字列に配列みたいに変数名で順番に番号をふることはできますか?
>>676
ん?なぜそんなことをする必要がある?
678デフォルトの名無しさん:04/09/06 00:52
いつもabstractがどうたらこうたらというので悩まされています。
ググったり本で調べたりすると「抽象メソッドを持つクラス」「そのクラスの中で実装していないクラス」とありますが
どういう事か意味不明です。


今、以下のようなクラスを作り、main関数がある別のクラスでインスタンス化して使おうとしたんですが
abstractとして宣言しろと言われてしまいます。
(import文省略)

public class Player{
public Player(){
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("char.gif");
}
}

何故これが「abstractとして宣言する必要がある」のか教えてください。
クラスファイルを完全修飾クラス名からInputStreamもしくはバイト配列で
読み出す方法はありませんか?

Class#getResourceAsStream(String)

なんでこんなにReflectionが流行ってるんだ?
681デフォルトの名無しさん:04/09/06 01:36
>>678
Playerにはimplementsで何か指定してない?
682デフォルトの名無しさん:04/09/06 01:48
>>681
Runnableを指定してました・・・・
しかし、これが絶対必要なんです。
なんとかなりませんか?
というか何故implementsがあるとダメなんですか?
implements Runnableしたということは、自分か自分のサブクラスで
Runnableで宣言してあるメソッド(public void run())を実装するよ、
と表明しているのと同義。それをしてない以上怒られて当たり前。

ここまで説明させて「なんで?」なんて聞くなよ?
685デフォルトの名無しさん:04/09/06 02:11
>>684
わかりやすい回答をありがとうございました。
runは後で作ればいいやと思ってたのが間違いだった・・・orz
JVMを開始してからの経過時間を取得したいのですが、
どうすればよいのでしょうか?

開始時のcurrentTimeを保持しておいて、取得したい時の
currentTimeとの差を求めるしかないのでしょうか。
それのなにがいやなのか・・・
>>675
拡張子exeで圧縮ってどういうことでしょう?
自己レススマソ
専用ソフトがあるようでした。
ttp://wiredstyle.net/documents/launch_java_app/
>>689
JSmoothというのもあるので、試してみると面白いかも。目に付く機能は以下のとおり。
・JVMの自動検出(Sun JVM、MSJVM、ソフト組み込みなどから選択可能)
・JVMが見つからなかった時に、ブラウザで指定したURLを開く機能
これでJava Pluginのダウンロードサイトを指定すればJVMのインストールが簡単になるはず。

ライセンスがGPLだけど、このソフトで作った実行ファイルはGPLの対象にならないのもうれしい。
691690:04/09/06 12:14
すまん、URLを忘れてました。こちらです。
ttp://jsmooth.sourceforge.net
692デフォルトの名無しさん:04/09/06 13:15
javaでファイル検索プログラムを作りたいのですが、
引数1で調べるディレクトリの指定、
引数2でファイル名やワイルドカード等の検索キーの指定をしたいのですが、
今は正規表現(Matcher&Ptternクラス)を使ってやっているため、
例えば全てのファイル検索なら.*と指定しなければなりません。

WINDOWSのエクスプローラのような検索指定、
*.*なら全てのファイル&フォルダを検索(自分のプログラムでは、*.*だとエラー)
*.javaなら拡張子がjavaの全てのファイル&フォルダを検索、
testならファイル名にtestが入っているファイル&フォルダを検索というようにしたいです。

このような引数指定をできるようにするには、どうしたらいいのでしょうか?
693デフォルトの名無しさん:04/09/06 13:39
>>689
なぜexeにする必要があるのか?
JavaWebStartを使うか、マニフェストファイルに記述してダブルクリックするだけの
起動にどんな不満があるのか?
694デフォルトの名無しさん:04/09/06 13:40
>>692
Javaでファイル検索するなら、Jakarta Luceneがおすすめ
javaでオブジェクト指向を学びたいんですが、
class設計やアクセス制御などをある使う必要がってあまり難しくない程度のw

「課題」を出してもらいたいです。
よろしくお願いします。
>>692
JakartaのOROに、glob(*.javaとかのパターン)をPerl5正規表現に変換する奴があります。
(*.*を全ファイルと解釈するって、ピリオドを含まないファイルはどうなるんだろう?)
697デフォルトの名無しさん:04/09/06 14:19
>>694
出たな!!! ジャカルタ厨!!!
ジャカルタコモンスもいいが、あればかり使うと・・・
>>693
上に挙がってたサイトに各手法の考察が載っているが、それが不満にならない?
ttp://wiredstyle.net/documents/launch_java_app/
正直ちょっと古いかおかしいとは思うけど。
Active-XとJavaPlugin使えばJREは自動的に最新になるんだし、
JWSの別途インストールなんて問題にならない。
サーバの設定云々も実は不要だったりする。

何が何でも「exeくれくれ」には正直辟易するけど、
実行可能JarやJavaWebStartが、問題のまるでない完璧な解な訳ではないので
そんなに目の敵にしなくてもいいと思う。
>>689-690で示したような個性的な機能を持ったランチャー作成ツールもあるんだし、
exeにする利点は大いにある。

まあ、理由が「Javaは遅いらしいのでWindowsネイティブアプリにしたい」とかだったら
あなた同様私もげんなりするわけですが。
antしか使ってないのにJakarta厨言われてもorz
(つーか、antはもうJakartaですらないな)
前に使ったことがあるから知ってただけだよぅ
>>694
それはファイルの内容での検索だと思われ。
701689:04/09/06 14:33
>>690
ソフト紹介ありがd。

漏れも今まで実行可能jarで配布してたんだけどなんかjarのダブルクリックって違和感がある・・・
JWSってのは使い方知らなかったけど面白そうなので今度調べてみます。

そういえばeclipseもjavaで作られてるって聞いてるけど、インストーラー付のexeもjavaプログラムでできるのかな。
エクリプスのexeって、プラグ印を全部クラスパス指定してなんか起動するだけじゃないの?
>>695
現在、クラスは設計するものではなく、存在を調べて使用法を学ぶ
ものなのです。
>>695
インベーダーゲーム作ってください。
ちょっと気になったので質問させてください。
JAVAのSwingはJAVAが持ってる独自UIですよね。
それじゃ、UNIXなどでXが入ってないPCでも、
Swing使ったJAVAアプリを立ち上げると、
それはGUIが立ち上がるんでしょうか?
ありえないと思うけどなぜだろう
>>705
グラフィックカードの管理の機能はない。
708デフォルトの名無しさん:04/09/06 16:12
guiguiたちあがるよ
>>705
KDEもGTKも独自UIだが、Xが入っていないと使えない。
誰かJavaでディグダグつくってくれませんか

自分では作れなかったので

敵が高速でよってくるスピードを少し遅くしたものを

お願いします。
KDEじゃねぇや、qtだった。
Velocity anakia で質問なんですが・・・
Windows上で XML(UTF-8) -> VSL(UTF-8) -> と処理しようとすると
文字化けして、 ???? ってなってしまうんですが、これって velocity.properties で対応するしかないんでしょうか?
713705:04/09/06 16:21
>>707
>>709
なるほど。
やっぱ無理なんですね。
ありがとうございました。

>>708
  _, ._
( ゚ Д゚) …
714デフォルトの名無しさん:04/09/06 16:42
はじめまして、JAVAプログラマーの見習いをやっています。
見習といっても、何ができるでもなく
つい1週間ほど前に会社からプログラマ転向の命令が下りました。
現在は教本を使い(スタートアップJava 技術評論社)
本の通りにプログラムを作ってみたりしていまして
一応、空のウインドウを作るところから初めて
多少本を見ながらですが、if文、for文までは使えるようになりました。
ですが、いまいちしっくり来ません。
なんというか、メモ帳にタイピングの練習をしてるような?気分なのです。
とりあえず、Javaと言うものの概念(クラスやオブジェクト指向)は
なんとなしに解ったのですが、肝心のプログラム自身を
何を作ったらいいのか、どう練習や勉強をしたらいいのか解りません。

先輩の方々はどういう勉強法をされましたか?
またどんなプログラムを作って勉強されていましたか?
馬鹿げた質問かもしれませんが
会社からは「独学で覚えろ」としか言われてませんので
本当に解らないのです;;
よろしくお願いいたします。
>>714

まずは自分では作らず、人のプログラムをいじることから始める
>>714
まず、自分がほしいと思うようなソフトを思い浮かべる。
難しいのは避けて、こういうのあったらちょっと便利〜と思える物。
それを作るために、どういう処理が必要なのか。
どういう事を覚えないといけないのか。
それらを目標に勉強してみては?

もしくは、サンプルとかで載ってる簡単なツールのソースを参考に、
そこから自分の気に入るように改良したりするのも勉強になるし。
717デフォルトの名無しさん:04/09/06 19:45
質問させてください。

JAVAから外部プログラム(UNIXのシェル)を実行して、
その外部プログラムが終了する(戻り値を得る)までJAVA側は待機する
にはどうしたらよいのでしょうか?
718717:04/09/06 19:47

言い忘れました。外部プログラムはCOBOLです。
CORBAでも使うとか。
CORBAですか!
標準のJ2EE APIだけじゃ到底無理なんですか?
>>717
java.util.Process#waitFor
java.util.Process#exitValue


722721:04/09/06 20:04
まちがえた。java.langだからなんもせんで使える。
723717:04/09/06 20:43
>>722
おお!
これならなんかできそうですね!
いや、まだ設計段階なんで、試すことはできませんが、
「できるかどうか」だけ知りたかったんです。
ありがとうございました!
724ヤンス:04/09/06 21:11
マップチップを使ったタイリング表示を上手く行きませんどこかコードの記述が間違っているのでしょうか?
二次元配列の要素数をランダムで入れたときは表示されるのですがコメントで消してある二次元配列の方を使うと、まったく表示してくれません
どの辺が間違っているのか助言の方をお願いしたいです。
img = new Image[2];
img[0] = getImage(getDocumentBase(),"map1.gif");
img[1] = getImage(getDocumentBase(),"map2.gif");
/*
int map[][] ={
{1,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1}};
*/
map = new int[10][10];
for (int y=0; y<10; y++){
for (int x=0; x<10; x++){
map[x][y] = (int) (2 * Math.random());
}}}
public void paint(Graphics g){
int no;
for(int my=0;my<10;my++){
for(int mx=0;mx<10;mx++){
no = map[my][mx];
g.drawImage(img[no], 32*mx,32*my,this);
725デフォルトの名無しさん:04/09/06 21:12
っていうか書いても10行くらいだろ
なんで試せないの?
726デフォルトの名無しさん:04/09/06 21:41
>>724
その2次元配列を同描画しようとしたの?
727712:04/09/06 21:43
>>712
結局、自分のやりたいことはVelocityのバグに阻まれているらしかったのでパッチを作った。
取り込まれるかわからんけど、VelocityのBugzillaに登録しておいた。
728デフォルトの名無しさん:04/09/06 21:43
>>724
ていうかjava.awt.image.MemoryImageSourceのjavadoc見れ
サンプルコード付きで使い方説明してあるよ
>>724
map[][] の スコープがわからんのやけど、
それはちゃんと paintメソッドで参照できる場所にある?
730ヤンス:04/09/06 22:19
スンマセン何を作っているか書いてませんでした
JAVAアプレットでミニゲームを作っているのです、そこでファミコンとかで
あったロードランナーとかブロック単位でマップを表示するってのをやりたくて・・・

>>725
何度もコンパイルして実行しているのですが・・・

>>726
ゲームで使うマップを描画しようとしてまして、0、が空間で1がブロックって感じで

>>728
ありがとうございます、早速みて見ます!

こんな質問に反応してくださってどうもです、未熟者の上爪垢も溜まっておりますので
731デフォルトの名無しさん:04/09/06 22:24
もし
A a = new B();
ならA型の変数aにB型のオブジェクトを入れるという意味でいいんですか?
継承のところでスーパークラスはサブクラスのオブジェクトを参照できる
ってところで混乱しているんですが・・・
732デフォルトの名無しさん:04/09/06 22:31
初心者の質問で失礼ですが、どうしても迷子になってしまったのでこちらに来ました

"HelloWorld" のプログラムで、コンパイルはできるのですが、実行ができません
環境変数の設定でCLASSPATHの設定がおかしいとのことですが、
「コントロールパネル」→「システム」→「システム環境変数の設定」で
パスの設定の仕方がわかりません
ピリオドを入れればいいという話ですが、、、

ちなみに現在の設定値は
C:\WINDOWS\System32\QTJava.zip
です。
既出のものかもしれませんが、よろしくお願いします
733ヤンス:04/09/06 22:34
import java.applet.*;
import java.awt.*;
public class for2 extends Applet {
Image img[]; int map[][];
public void init(){
img = new Image[2];
img[0] = getImage(getDocumentBase(),"map1.gif");
img[1] = getImage(getDocumentBase(),"map2.gif");
/* int map[][] ={{1,0,0,0,0,0,0,0,0,1},
       {1,1,1,1,1,1,1,1,1,1},
       {0,0,0,0,0,0,0,0,0,0},
       {0,0,0,0,0,0,0,0,0,0},
       {1,1,1,1,1,1,1,1,1,1}};*/
map = new int[5][5];
for (int y=0; y<5; y++){
for (int x=0; x<5; x++){
map[x][y] = (int) (2 * Math.random());
}}}
public void paint(Graphics g){
int no;
for(int my=0;my<5;my++){
for(int mx=0;mx<5;mx++){
no = map[my][mx];
g.drawImage(img[no], 32*mx,32*my,this);
}}}}
734デフォルトの名無しさん:04/09/06 22:35
>>731
何の本呼んでるか知らないけれどその本捨てた方がいいよ
735ヤンス:04/09/06 22:38
>>729
733みたいな感じでコードを書いたのですが、どこか間違えているのでしょうか?
ネットや本等で何度みてもまったく同じに模写したのですが・・・・
ランダムじゃなく、自分で二次元配列に要素数を入れた方を画面に出力させようと
すると駄目なんです
736デフォルトの名無しさん:04/09/06 22:40
>>734
この板その返しばっかりですよね
>732
・ファイル名がクラス名といっしょになっているか見る
・package指定をしていないならCLASSPATHはとりあえずいらない
・javaコマンドを実行するとき、ちゃんとそのディレクトリに移動して実行する
738729:04/09/06 22:52
>>735
配列変数のそういう初期化の仕方って、
宣言時しかできないんじゃなかったっけ?

int map[][] って宣言した場所でしないと駄目じゃない?
>>737
パッケージ指定とCLASSPATH指定は関係ないでしょう。
まぁ、>>732だけの情報で何かいうほうが難しいが。
740デフォルトの名無しさん:04/09/06 22:57
>>735
mapがインスタンス変数とローカル変数で定義されてるから、
ローカル変数が優先されてインスタンス変数は初期化されていない
741デフォルトの名無しさん:04/09/06 22:59
>>732
java -classpath . HelloWorld

または
set classpath=.
したあと
java HelloWorld
742デフォルトの名無しさん:04/09/06 23:00
プロファイリング機能がJ2SE5.0 では以前と比べて速くなったようですが、
正確な秒数で機能を比較することってどうやってやればいいのでしょうか?
お願いします
743デフォルトの名無しさん:04/09/06 23:06
>>731
A a = new B();
が可能なのは、以下の二つの場合
1.BがAのサブクラスである
2.Aはインタフェースで、BがAを実装している

このようにすることで、BのインスタンスをAとして扱うわけだが
Aから継承したメソッドは使えるが、B固有のメソッドは使えなくなる。
こんな馬鹿なことは通常しないので、こんな例を載せるのは糞本。
初心者本じゃなくてアイディア本だったらありかもな。
上手く使えば使える手だし。
745ヤンス:04/09/06 23:25
>>740
出来ました!やはり配列の宣言と代入を違う場所で行っていたのが
悪かったようです、この為にグーグルのリンクの表示文字がどれだけ紫に変わったことか・・・
ありがとうございました。
これで安心して爪垢掃除が出来ます。
>>743
初心者向けのコードとしてはたしかにそうかもしれないが
インターフェースプログラミングとか考えれば糞ってこたぁないでしょう

List list = new Vector();
とかふつーにするでしょ?
747デフォルトの名無しさん:04/09/06 23:57
>>746
俺ならまずしないね
内部で使うのにインタフェースで扱ってどうするのさ
インタフェースってのは対外部向け
たとえばファクトリとかね

X image = XFactory.createX();

public X createX() { return new XImpl(); }

あとはインスタンス変数などで、インタフェースを通して変更がかかる奴

private List list;

public setList(List list) {this.list = list; }

内部で閉じてる変数は、インタフェースで受ける意味ないよ
>>743は、例の釣り師。
先月やたら出没して、最近ようやくおとなしくなったと思ったら
また登場しだすとは。。。
夏休みはもう終わったんだぞ。2学期が始まったのなら2ちゃんで
釣ってないで勉強しる!
749デフォルトの名無しさん:04/09/07 00:04
>>748
違うよばか
インタフェース、日本語訳は界面
外界と内部を分けるための手段だよ
>>747
ああ、独りで作ってる限りはそれでもかまわないよ。
>>748
ああ、そうかそうか
つられた俺が悪かった
>>747
普通にするだろ。
753デフォルトの名無しさん:04/09/07 00:10
>>747
「実行レベル」だけを考えればそうだが、コーディングレベルってのが
あるでしょ。
754デフォルトの名無しさん:04/09/07 00:13
>>752
おまいら、何のために実装クラス作ってんの?
インタフェースで受けたら、protectedメソッドも
privateメソッドも呼べないんだぜ?
publicメソッドだけで内部処理のプログラミングしてんのか。
755デフォルトの名無しさん:04/09/07 00:14
確実に釣りだな。
問題は真面目に質問してる初心者に釣りネタを吹き込むなって事だ。
>>754
意味不明
使用するために必要十分な機能をもつインターフェイスや基底クラスなら
なんらこまらんだろうが。
だいたい、誰も常に実装クラス型を使用しないなんていってない。

>privateメソッドも呼べないんだぜ
あほか、privateメソッド呼ばにゃならん場面でするわけなかろーが。
つうか、いつの間にかprotectedとかprivateとかが絡んでくるような
「内部処理」とやらの話に変わってるな。
すんません、Servletのことで質問したいのですが
とあるサイトからのみドメインでアクセスを
規制させたいのですが、飛んできたページのドメインを取得
するにはどうすればいいのでしょうか?

一応それっぽいのではRequestクラスのgetHeaderからrefereかなんかで
URL丸ごとは取れるっぽいのですが・・・ドメインのみってのは無理でしょうか
758デフォルトの名無しさん:04/09/07 00:39
Refererからドメインを取得すればよいのでは・・・
>>757
Servlet使うならHTTPの基礎ぐらい勉強してください
>>757

URLって書式決まってんだから取れるでしょそれくらい。
java.net.URL のAPI の説明を見るとヒントがかかれている。
>>743
Iterator i = new ArrayList().iterator();
などというのもバカなことなのですね。
762597への追加:04/09/07 06:00
write()を使ったファイルへの複数行の書き込み方が分かりません。
例えばfor文で
 1+2+3+・・・+10=55(式:m=m+1)
 2*2*2*・・・*2=1024(式:n=n*2)
が得られているとき、write()でこれらをファイルに改行の形で書き込むため、
ファイルのオブジェクトをfileを用い、
 file.write(m + "\n" +n)
ではヘンテコな書き込みになってしまいます。

どないしましょう?
763デフォルトの名無しさん:04/09/07 06:38
>>762
FileOutputStream fs = new FileOutputStream("aaa.txt");
PrintStream out = new PrintStream(new BufferedOutputStream(fs));
out.println(m + "¥n" + n);
out.close();
閑話休題:日本とアメリカには借金時計のHPがあるらしい。
(核の時計をもじったもの)

TVで見たが、なんか高速のアクセスカウンターを見ているようだった。
興味がある人は勝手に検索してくれ。
まずは閑話休題の使い方をマスターしたまえ。
>>695
結城浩の「Java言語で学ぶデザインパターン入門」を嫁
767デフォルトの名無しさん:04/09/07 10:26
>>697
> >>694
> 出たな!!! ジャカルタ厨!!!
> ジャカルタコモンスもいいが、あればかり使うと・・・
あればかり使うと? 何だって?
説明よろ
768デフォルトの名無しさん:04/09/07 10:47
>>764
> 閑話休題:日本とアメリカには借金時計のHPがあるらしい。
> (核の時計をもじったもの)


JavaScriptでonLoadしているだけか。
それではリアルタイム性に欠けるではないか。
お主がJavaAppletかJavaWebStartで作り直せ
769デフォルトの名無しさん:04/09/07 11:03
>>698
> >>693
> 上に挙がってたサイトに各手法の考察が載っているが、それが不満にならない?
> ttp://wiredstyle.net/documents/launch_java_app/
> 正直ちょっと古いかおかしいとは思うけど。
ほんとにめちゃくちゃなこといってる。

  Javaで開発したアプリケーションを配布する場合、 「どのようにしてユーザーにアプリケーション
  を起動させるか」といった問題があります。 Javaで作られたプログラム(CLASSファイル)は、基
  本的にはコンソールから実行する必要があるので、 EXEファイルのようにダブルクリックで簡単
  に起動させることはできないからです。 コンソールからしか起動できないのでは、そのアプリケ
  ーションを利用できるユーザーは限られてくるでしょう。

時代の流れに取り残された香具師が書いた説明ですな。JavaWebStartに関しても嘘八百ばかりならべてますなあ。
jarでも引数設定できるし。*BSDではちょい面倒でもWindows環境なら何もしなくても勝手にやってくれるので設定は激しく容易だし。
>>769
アイコン設定できないってのが問題よ

あとwebstartはsandbox内ということで根本的につかいかたが違う

開発者の目とユーザーの目はだいぶ違うということを覚えておくといい
アプリケーションはすべて個別のアイコンがあってデスクトップやスタートメニューに
ショートカットがあるもの・・・と認識している人は多いよ

どっちにしろラッピング程度なんだから目くじら立てることはないんじゃないの?
これを我慢できれば代替も可能・・・ってレベルで満足してくれるところならかまわんけどね
>>770
JavaWebStartなら、アイコン作ってデスクトップやスタートメニューにショートカット作ってくれるし。
>>771
肝心のsandboxってところ見落としてるぞ
eclipseってショートカットが作られたけど、Javaで出来てるんでしょ?
>>773
eclipseは、JVMを起動するexeファイルがある。
まぁ、こういう工夫をすればアイコンは問題なく設定できる。
そいや、引数でVMを動かす javaコマンドも指定できるし。
見た目にこだわるなら、こういう工夫をすればよいという例。
775デフォルトの名無しさん:04/09/07 16:33
JavaプログラムからGnuPGを使用して暗号&復号を行いたいのですが、
復号時などでパスワード入力を求められる時、待ち状態になってしまい入力ができません。
具体的にはInputStreamのreadLine()メソッドで止まってしまい、
プロセスにパスワードが送れていないようなのです。
どなたかわかる方いらっしゃいますか?

OS:FedoraCore1
JDK:1.4.2
gnupg-1.2.2-3使用


Runtime run = Runtime.getRuntime();
Process pro = run.exec("gpg -o /home/hoge/hoge.txt /home/hoge/hoge.asc");

PrintWriter pw = new PrintWriter(pro.getOutputStream(), true);
pw.println("hogehoge");
pw.flush();
pw.close();

BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = inBr.readLine()) != null) {
System.out.println("in : " + line);
}

BufferedReader erBr = new BufferedReader(new InputStreamReader(err));
line = "";
while ((line = erBr.readLine()) != null) {
System.out.println("err : " + line);
}
inBr.close();
erBr.close();
>>775
readLineは改行が来ないと止まってしまう。
そこはreadLineを使わないようにする。
777775:04/09/07 17:21
>>776
返信ありがとうございます。
readLineは使用せずに、readを使用してみましたが、結果は同じでした。
パスワードの入力待ち状態になってしまうようで、帰ってきません。
どうしたものか…
>>777
いやいや、そうではなく。
gnupg側がなんか表示してパスワード入力待ちになると思うんだが、その表示、たとえば「password:」が来たら読み込みを中止してこっちから書き込むようにする。
だから1文字ずつ読み込みつつ、目的とする文字列が来たかどうか判定するのよ。
779775:04/09/07 17:45
>>778
残念な事にInputStreamを1文字でも読んだ時点でパスワードの入力待ちになってしまいます。
パスワードの入力部分は別プロセスなんでしょうか…
>>779
Outputのcloseが早すぎ。
flushだけにしておくがいい。
781775:04/09/07 18:36
>>780
Outputのcloseを後半にしても動作は変わらずでした… orz
762です。
 解決しました。763さん有難うございました。
 
783ゲッツ:04/09/07 18:44
質問させてください。

jdbc.odbc.JdbcOdbcDriver接続で
MDBのデータをSelect文で抽出したいのですが、
Select * form Tabale like '%'
みたいなことをしたいのですが、%でうまく検索できません。
エスケープシーケンスでやればいいんですよね?

どのようにやるのかわからないので、教えてください。
>>783
select * from テーブル where カラム like '%キーワード%'
785ゲッツ:04/09/07 19:03
あ・・・
普通にできました。。。
''←で囲ってなかったせい?
なんか3時間ぐらい潰した・・・
786ゲッツ:04/09/07 19:14
間違えた
'%'←'で囲っていなかったせいかな?

>> 784
レスありがとうございました。
>>772
jarsignerでしょめいすればsandboxを抜け出せるかと思ったけど
>>772
さんどぼくすも、アプレットのものほど厳しくないし。
駄目な質問例
 その1 ◆ 名前、本文に「初心者」が入っている。
 その2 ◆ 2度目以降の書き込みに通し番号が入っていない。
 その3 ◆ 環境がなどが書かれていない、または小出しにしている。
 その4 ◆ 質問が1行のみ。
 その5 ◆ 質問文から要旨が汲み取りにくい。
 その6 ◆ 検索という言葉を知らない。自分自身で調べる気が全く無い。

※誠意のある質問には、誠意のこもったレスが返ってきます。
 レスを頂いたら、同じ症状の方の為に結果報告、お礼のレスも忘れずに…。
 みんなで助け合い、お互いのスキルUPを目指しましょう。

「初心者です」と前振りする奴の大半は
・自分で調べたくありません。
・自分のパソコンの環境等は自分の頭が悪くさっぱりわからないので勘弁してください。
・専門用語を使われても分かりません。調べません。
・金も時間も手間もかける気は全くさらさらこれっぽっちもねーから全部教えろ屑ども。
・問題が解決しても事後報告やお礼を述べるつもりはさらさらありません。
・四の五のいわずさっさっと教えろ糞ボケ

という意味であり、実質初心者以下の糞虫である。
790デフォルトの名無しさん:04/09/08 13:08
JavaWebStartアプリはペタペタとコンポーネント貼るだけで完成しまつか?
791デフォルトの名無しさん:04/09/08 15:05
vectorって文字列しか扱えないんでしょうか?
>>791
んなこたーない
Javaにvectorなんかあったんだ。
Vectorが扱えるのはObject型

プリミティブ型は扱えない
795775:04/09/08 15:19
>>775です。解決しました。
GnuPGにバッチモードというオプションがあって、それを付けたら>>775のソースで動きました。
ありがとうございましたm(_ _)m
>>791
Vector でなく ArrayList をつかっとけ。
なんで初心者はVector使いたがるのかね
初心者ご用達のHPや本にVector使ってあるとか
ArrayListやHashMap使った改訂版出して欲しいやね
800デフォルトの名無しさん:04/09/08 18:22
>>797
名前が短くて格好いいから。
非推奨(遅いという意味で)とはいえ、メソッドが多いから。
Listインターフェースにも、せめてgetFirstElement()とgetLastElement()
は入れて欲しかった。
あとawt.Listの名前は、ListPaneにして欲しかった。
>>790 もヨロ
今なおEnumerationを返す標準APIに、
名前違ってもいいからIterator返すメソッド追加して欲しい。
803デフォルトの名無しさん:04/09/08 22:55
java house ってどーなったん?
804デフォルトの名無しさん:04/09/08 23:11
場合によってはVector使わなくてはならない時もあるべさ。
もはやない
806仕様晝無しさん:04/09/08 23:30
Javaプログラム中で他のjarファイルを起動する方法がわかりません。
下記のようにpackage bin 中に class Invoke というのをつくり、
package bin;
import java.io.*;
class Invoke {
public static void main(String[] args) throws IOException {
String[] cmd = { "Java -jar \"C:\\hoge\\piyo.jar\"" };
Process proc = Runtime.getRuntime().exec(cmd);
InputStream in = proc.getInputStream();
in.close();
}
}
そこでhogeフォルダのpiyo.jarファイルを起動するべく走らせると、
bin.Invoke.main(Invoke.java:19)
となってしまいます。
どなたか、他プロセスを起動するのと同様にjarファイルを起動する
方法を教えてください。
お願いします。
>>805
Swing等つかってないのか?

それにArrayListとは完全に同じではないぞ
「ほぼ」同じなだけだ
StringBufferとStringBuilderくらい違う
まぁ初心者向きというところからして同期処理入ってるVector勧めやすいのは確かだな
なんもしらんとマルチスレッドではまるかもしれんし
>>806
>そこでhogeフォルダのpiyo.jarファイルを起動するべく走らせると、
>bin.Invoke.main(Invoke.java:19)
>となってしまいます。
これは情報量0。ちゃんとどういう例外を出しているか前後を含めて
コピペすること。

あと、java.exeを呼ぶのではなく、URLClassLoaderの
インスタンスを生成してmainメソッドを呼ぶと
新しいVMが立ち上がらないので、状況によっては選択肢の一つとして
検討してもいいかも。
809デフォルトの名無しさん:04/09/08 23:39
>>800
Jakarta Commons Connectionsを使えば
藻前が喜びそうなコレクションクラスが沢山見つかるぞ。
>>806
>String[] cmd = { "Java -jar \"C:\\hoge\\piyo.jar\"" };
これは
String cmd = "Java -jar \"C:\\hoge\\piyo.jar\"";
にするかもしくは配列ごとにくぎるかどっちかにすること。
>>800
> >>797
> 名前が短くて格好いいから。
> 非推奨(遅いという意味で)とはいえ、メソッドが多いから。
> Listインターフェースにも、せめてgetFirstElement()とgetLastElement()
いらんだろ。いきなりlist.iterator().next()で頭からゲットだ。
ラストはlist.get(list.size() - 1)で十分

>>807
>まぁ初心者向きというところからして同期処理入ってるVector勧めやすいのは確かだな

807のような馬鹿に早く滅んで欲しいと願ってる奴は多いだろう。
813仕様晝無しさん:04/09/08 23:57
806 仕様晝無しさんです。
>>810
起動できました!
ありがとうございます。
>>808
勉強になりました。
今後は例外等はすべてコピーします。
また機会があればURLClassLoaderも
試して見たいと思います。
皆さん本当にありがとうございました。

>>812
禿同。っつか >>807 は初心者に毛がはえた程度だとおも。
>>807
あんな中途半端な同期なんぞに頼られても困る。前世紀の遺物は消えろ
816デフォルトの名無しさん:04/09/09 00:29
つーかJava3発表してAPI一新きぼん
>>815
その中途半端な同期すらしらないで
「Vectorなんて使いませんよ、ArrayListでいいじゃないですか」
といってはまってるあふぉを見たことあるからなぁ

まぁ、Swing使ってるかどうかだろう
しんくろないずど すればいいじゃない
Swingなんか使うかアホ
>>817
Vectorと一緒に消えてください。それがみんなの願いです。
821デフォルトの名無しさん:04/09/09 01:16
>>818
遅いから出来るだけ使わないようにしてる。
>>821
夜釣りですか。精が出ますね
823デフォルトの名無しさん:04/09/09 02:05
>>822
ついでに例外も出来るだけ使わないようにしている。
生成するのに30秒とかかかるとやってられない。
ディスクガリガリ言わせるのも気になる。
全然面白くないんだけど
Swing好きですが。
>>811
> ラストはlist.get(list.size() - 1)で十分
で良いなら

> いらんだろ。いきなりlist.iterator().next()で頭からゲットだ。
は list.get(0) で十分なような。
827デフォルトの名無しさん:04/09/09 06:51
ArrayListはイテレータよりインデクスアクセスが速い
>>790
JavaWebStartはアプリケーションの配布形式なので、そういう質問は適切じゃない。
ペタペタとコンポーネント貼るだけで完成したアプリケーションをJavaWebStartで配布すればいい。
ついでにいえばwebstartはアプレットもアプリケーションもできるしな
830デフォルトの名無しさん:04/09/09 10:42
>>826
お前等ぬるぽ気にしろ
>>828-829
まじでつか。
普通にJavaアプリを作ってサーバーに置くだけ?

Javaと言えば普及したけど苦労、という話しか聞かないので意外だなあ。

スクエニが語る、ドラクエ・FFの携帯移植「苦労話」
ttp://www.itmedia.co.jp/mobile/articles/0409/07/news054.html
>>831
苦労した、ってそのサイトに書いてあるのはメモリサイズとの戦いだけじゃねぇか。
JavaじゃなくてもBREWでも同じ問題あるだろ。
一見Javaの問題に見える

「アプリが止まった時に、ライブラリがバグっているのか、アプリに問題があるのか問題の切り分けができない。」
も、BREWでも同じ事が言えるしな。
それにこれは、ここの開発者が問題の切り分けがうまくないだけな気もしないでもない。
ゲーム開発者は、処理効率をあげるのはうまいが、作業効率をあげるのはうまくないからな。
>>831
つうか、ちょっとはぐぐれよ。
なんでJavaWebStartのしくみと、苦労話が結びつくのかなぞ。。。
834デフォルトの名無しさん:04/09/09 11:55
>>832
確かにその文脈は納得。

だけど、それとは別にWindows/Delphiでダイアログアプリのに比べると、Swing超苦しくない?
自分がSwing使ったのは数年前JB○ilderなんで状況変わってるかもしれないけど。
835デフォルトの名無しさん:04/09/09 13:32
非チェック例外と非キャッチ例外ってなにが違うのですか?
>>835
非チェック例外 非検査例外の方がオフィシャルだが、unchecked exceptionなのでそれも可。
非キャッチ例外 そんな用語はない。
>>834
なにが苦しいのかによる。
838デフォルトの名無しさん:04/09/09 13:51
>>836
http://www.amazon.co.jp/exec/obidos/ASIN/4797318570/ref=pd_bxgy_img_2/249-2326462-2123501#product-details
この本の例外処理をするの項で、

 Javaの例外には、「非キャッチ例外」というものがあります。
例)
int a = 1000, b = 0, c = 0;
c = a / b;

と、掲載されています。
839デフォルトの名無しさん:04/09/09 14:42
>>835
非チェック例外とは、ヌルポなどコンパイル時にエラーが出ない例外であり、
非キャッチ例外とは、プログラム記述者がその非チェック例外をキャッチ
するコードを書かない為に、ThreadGroup#uncaughtException()に
処理が行ってしまう例外。
uncaughtのメソッド名の通り。
>>838
ネタか?ネタなのか?
林 晴比古あいかわらず笑わせてくれるな。
>>838
少なくともそれはuncaught exceptionの話ではないな。
>>840
たわけ!
非キャッチ例外は、正式用語じゃ。林先生をバカにすると承知しないぞ。
>>839
ウソではないが正しくもないな。
単純にcatchされなかった例外のことをuncaught exceptionと呼ぶけど、非キャッチ例外とは言わないと思う。
普通に「キャッチされなかった例外」
>>842
バカになんかしていない。
ネタに対して笑わない方がしつれいだぞ。
芸人のネタに気づかないのもしつれいだぞ。
結局835は、またしても例の釣り氏だったと。。。
だいたい非キャッチ例外だと日本語として意味がおかしくないか?
キャッチ例外に非ずってことか。
>>846
林先生の日本語をおかしいとか言うなぁ
848835:04/09/09 15:15
なんかよくわかりませんが、「非キャッチ例外」でグーグルで検索しても1件しかヒットしないので、
メジャーじゃないことはわかりました。
>>848
しかも、非検査例外の誤用だしな。
誤用っつーか uncaught exception を直訳しただけっつーか。

他の文書と用語の統一をしようとかいう配慮が欠けてるのは確かだけど。
>>850
どうみても、unchecked exceptionを非キャッチ例外と書いてるのだが。
ちゃんと検索したのか?
byte short int long float double char boolean
これらと、Stringが区別される理由を教えてください。
>>852
その方が言語仕様上都合が良いと言語設計者が判断したからです。

っつうか、なぜその仕様になっているかという理由を考えてもしかたない。
そうなっているメリットデメリットを考えるのは意義があるが。
>>852
質問の意味がいまいちわからんが、
Stringは参照型でそこにあがってるのはプリミティブ型だけど。
違いは自分で調べれ。
理由と言われても違うから違うとしか言いようがない。
>>852の脳内ではPerlやPHPと比較されてんじゃないか?
文字列を表すプリミティブ型があってもいいじゃん!と思ったんじゃないかな
ボーランドのJBuilederX使ってます。

http://up.isp.2ch.net/up/e86d9bb7d1c6.java

のコードで

62 行で シンボルを解決できません。シンボル: 変数 jLabel1 場所 : untitled9.Test の クラス (62:5)

と出るのですが、何故でしょうか?
林晴比古。
この人の本読みやすい。
>>857
class TestにjLabel1が無いから。
>>857
jLabel1なんて物がTestクラスに無いから。
861860:04/09/09 18:47
_| ̄|○
862857:04/09/09 18:51
回答ありがとうございます。
class Test内に
Frame1 kita = new Frame1();
kita.jLabel1.setText("test!");
と書いて、エラーは消えるんですが実際実行しても何も起こりませんし、

Frame1をextendsしてもダメでした。

後、jLavel1は同じパッケージ内からだと参照できそうなんですが、私の勘違いでしょうか?(汗
863860:04/09/09 18:53
>>862
クラス指定。
864857:04/09/09 18:57
>>863さん
具体的にどう記述すればよいのでしょうか?スミマセン
865860:04/09/09 19:01
>>864
俺の記憶が確かなら・・・
this.jLabel1は存在しないだろう・・・
Frame1クラスの変数をFrame1クラス以外で操作したいのなら・・・
Frame1.* となるのではないだろうか。
>>858
ウソがあって大切なこと書かなくていいなら、だれでも読みやすい入門本書けるね。
>>866
そう?
ちゃんと大切な事も書いてるけど。
って、何が大切な事で、何が大切な事じゃないのかがいまいち分からないけど。
俺には合ってる。
868857:04/09/09 19:08
>>865
どうもです。
62 行で static でない 変数 jLabel1 を static コンテキストから参照することはできません。 (62:12)
と出ました。。
>>867
そりゃ、いろいろ書けば、大切なことも中には含まれるだろ。
その中に誰も使わない用語(造語)も含まれているわけだ。
どれが林用語で、どれが公式の用語か、公式じゃなくても通用する用語かわからないような本は、ちょっと問題だな。
ちゃんと(林用語)とでも書いててくれればいいのだが。
あと、レスにも(林擁護)とでも書いてくれれば助かる。
870860:04/09/09 19:35
>>868
ごめ〜ん・・・
俺も勉強中でよくわかんないや〜・・・
しっかし・・・
ソース読んでみたけど複雑な事してるね・・・
たぶん、このjButton1_actionPerformedメソッド内で、
わざわざインスタンス作って、
その中で別クラスの変数操作しようとしてるからおかしくなってるのかな・・・?

Testクラスは・・・
public void test(JLabel l){
  l.setText("test!");
//  Frame1.jLabel1.setText("test!");
}

と、書き換えて・・・

jButton1_actionPerformedメソッド内は、
  Test test = new Test();
  test.test(jLabel1);

と、書き換えたらコンパイルは通ったよ。
>>869
>そりゃ、いろいろ書けば、大切なことも中には含まれるだろ。
だから、大切な事って例えばどの事よ?
じゃ、大切な事で含まれてない事って何よ?

>その中に誰も使わない用語(造語)も含まれているわけだ。
その用語ってどれよ?
さっきの「キャッチ例外」か?
ただの書き間違いだろ?

別に擁護するつもりはないが、
俺が勉強してる本にケチつけられたら気分いい物じゃないだろ。
そもそも、その叩きも具体的性に欠ける。
どれを見てそんなセリフを言ってんだ。
キミは自分のレスに「林が気に入らないだけ」とだけ書いといてもらえれば、
俺もわざわざレスしてみたりしない。
こんばんは。fedora1の環境ででjdeeをputtyから使っています。
でも、C-c C-v C-. で補完リスト一覧が出てきません。
どなたか設定をご存知でしたら、教えていただけないでしょうか。
873857:04/09/09 20:56
>>870さん
その通りにしたら上手くいきました!
ありがとうございます!
Javaから話が外れるんですが、
よく変数名やクラス名やメソッド名の例で、
hogeとかhageとか使ってますが、
hogeとかhageとかっていったいどういう意味ですか?
fooとかbarと同じ意味だな
876デフォルトの名無しさん:04/09/09 22:35
>>819
遅いからそれだけで使いたくないってだけですかい?
それとも?
877デフォルトの名無しさん:04/09/09 22:38
誰か教えてください。



Vector vctr = new Vector();

(中略)

Iterator itr = vctr.iterator();



この場合に"itr"は何クラスのインスタンスになったのでしょうでしょうか?
878デフォルトの名無しさん:04/09/09 22:40
>>823
> >>822
> ついでに例外も出来るだけ使わないようにしている。
> 生成するのに30秒とかかかるとやってられない。
> ディスクガリガリ言わせるのも気になる。

まるで携帯Java開発者のようだ。

>>829
それはいわゆるアプレットケーションだろう

879デフォルトの名無しさん:04/09/09 22:40
>>877
そんなこと気にするな。
というかそういう捻くれた考え方するな
>>877
Vector の親クラスである AbstractList のインナークラス Itr という
クラスのインスタンスだよ。これで気がすんだか?
>>877
残念ながらitrはインスタンスにはなれないのだ。
882デフォルトの名無しさん:04/09/09 22:48
>>879
>>877の言うことは漏れも気になる。Iteratorインタフェースには
メソッドの中身の記述がないが、ここでいう"itr"オブジェクトは
メソッドをいくつも持っている。一体メソッドの中身はどこに書い
てあるんだろうか?
883877:04/09/09 22:54
>>880さんありがとうございます。
ところでAbstractListにインナークラスがあるっていうのは
どの本かドキュメントに載っているのでしょうか?
もし教えていただけると助かります。

ps.>>877で"でしょうか”の部分を二回繰り返してすみません。
>>882
Iterator インターフェイスはメソッドの仕様を規定する。
あと、補足説明は Vector っつーか AbstractList の iterator() メソッドに書いてあるし。

これらに規定された以上の実装依存の情報を使用すると特定バージョン依存になる危険がより高くなる。
>>882
イテレータインタフェースを実装してるクラスだろkusomamire
>>878
アプレットケーションではなくてWebStartのカプセルの仕方が2つあるということでは?
だからアプリケーションかアプレットかという次元の話とは少し違う>WebStart

WebStartはjnlpAPIを使ったもの・・・としかいえんね
>>883
気になるなら JDK のルートにある src.zip 展開しろ。
Abstract クラスのインナークラスと書いたが >884 のいうとおり
どのクラスのインスタンスかというのは意味がない。知る必要がない。

Abstract#iterator が返すのは Iterator インタフェースをもつオブジェクト
であり、それ以上以下でもない。
>>883
> ところでAbstractListにインナークラスがあるっていうのは
> どの本かドキュメントに載っているのでしょうか?

あー、言い忘れた。どこにも載ってない。
っつかわざと載せてないない。理由は・・・もう分かるだろ。
Iteratorの実装クラスが知りたい人は、

ArrayList list = new ArrayList();
Iterator it = list.iterator();
System.out.println(it.getClass().getName());
やってみるといいよ。

Vector使う奴は氏んでね
>>889
> Iteratorの実装クラスが知りたい人は、
> ArrayList list = new ArrayList();
> Iterator it = list.iterator();

あーあ、こんな書き方してる時点で、分かってないの
バレバレだな w
>>890
夜釣りご苦労さん。
別にそんなところでListなんか使わなくていいよ。
>>891
やっぱりな。突っ込んだのはそこじゃない。

> Iteratorの実装クラスが知りたい人は、
と書いて、Vector ではない別のクラスを持ち出したとこだが。
Vector と ArrayList の iterator メソッドが返す
インスタンスはたまたま同じなだけだ。

お前もまたインタフェースが分かってない
1人だということが証明された。
893釣られてやろう:04/09/09 23:39
>Vector と ArrayList の iterator メソッドが返す
>インスタンスはたまたま同じなだけだ。

やられた。ここまで馬鹿だとは思わなかったよ・・・
誰もVectorの話なんかしてないよ。つまらんところしか見えないのな。

任意のインターフェースについて getClass().getName()でクラス名が取れるってことだ。
importができねー
なんでだよ

app1.java
-----------------------
import printer;

public class app1
{
public static void main(String[] args)
{
printer printer1 = new printer();
printer1.print();
}
}
---------------------------------
printer.java
---------------------------------
class printer
{
public void print()
{
System.out.println("Hello from Java!");
}
}
----------------------------------
app1.java:1: '.' がありません。

同じディレクトリにprinter.classがあるのにどういうことだふざけんな
895デフォルトの名無しさん:04/09/09 23:43
>Vector と ArrayList の iterator メソッドが返す
>インスタンスはたまたま同じなだけだ。

ふーん、内部クラスなのに同じなの?
それはそれでなぞだねぇ
>>893
あほかお前は。スレ読み返せ。
で、Class#getName は無名クラスの場合は何を返すんだ?
今から調べるか? w
897デフォルトの名無しさん:04/09/09 23:46
>>894
importいらんよ
>>895
どういう意味だ? 書き方が悪いのか。
実装が同じインスタンスを返す。
>>897
うをっ
ほんとだ
この参考書あてにならねーな
900& ◆2F1nYDgaQo :04/09/10 00:22
>>896
>で、Class#getName は無名クラスの場合は何を返すんだ?

クラス名を返すが、それがどうかしたのか?
別に今から調べてもいいぞ。
ナンノハナシシテンノ?キミタチ?
半月前くらいに、なんとなく面白そうだったのでJavaに手を出してみた初心者です。
まずは簡単なアプリから…と、グラフィックビューアを作ろうかなと思っています。

現在、Java Advanced Imaging Image I/O Tools をインストールし
なんとかBMPの表示ができたところです。

さて、諸先輩方に質問です。
上記のアプリ(現在まだ作りかけですが)をJAR形式にまとめるとします。
この場合、アプリを使うユーザも自身の環境に、Image I/O Tool をインストールする必要があるのでしょうか?
もしくは、標準のランタイムだけで使う方法はあるのでしょうか?
なにとぞよろしくお願いします。


#ものは試しと、サブノートにjarファイルを持っていってみたんですが
#案の定、動きませんでした(笑
> この場合、アプリを使うユーザも自身の環境に、Image I/O Tool をインストールする必要があるのでしょうか?
ある。
904デフォルトの名無しさん:04/09/10 01:06
質問させてください。
ifばっかり使うのと、else ifも使うのは何か違いがあるのですか?
>>904
馬鹿は芯でも治らない
906デフォルトの名無しさん:04/09/10 01:14
エクスプローラのようなファイルツリーを作りたいんですけど、
エクスプローラライクなUIのアプリではルートがDesktopで、その下にMy Documents、My Computer、My Networkplaces
ってなってますよね。
そのDesktopのパスってどう書けばいいんでしょうか?
自分で調べてみようと思って、
File file=new File("c:\\");
String str=file.getParent();
としてみたら、strにはnullが返りました。
listRootsでドライブのリストはできますが、その上はできません。
listRootsで返るドライブのリストが最上位パスなんでしょうか?
907902:04/09/10 01:16
>>903
ありがとうございます。
となると、自前なりネットなりでBMP関連のクラスを用意した方がいいかもしれませんね・・・。

>>904
さっそくだがJava暦半年の自分が答えてみる!(一度やってみたかったんだ)

 if A 〜
 if B 〜
のとき、AとB両方が成り立つ場合、もちろん両方実行される

逆に
 if A 〜
 else if B 〜
のとき、2つ目は「Aが成立せず、かつ、Bが成立する」ときにのみ実行される
 if A 〜
 else {
  if B 〜
 }
と書くこともできる

間違って…ないよね?
>>906
javax.swing.filechooser.FileSystemView とか使ってくれ。
909907:04/09/10 01:17
Java暦半年ってなんだ、半月だよ・・・私は・・・ orz
java歴がどうこう言うレベルの問題じゃないな。
>>902
最初のifがtrueだったとき、後に続くifの括弧の中の比較をするかどうか。
>>902
JAIの.jar同梱すれ
>>905
なかなかイヤなヤツだな。
スレタイの「初心者大歓迎」っての外さないとな。

>>904
とにかく・・・
>>907とか、>>911が言ってる通りな感じです。
特別な意味がない限り、if-else ifを使うべき。
if-else ifだと、どこかで真になれば、そのifブロックから一発で抜けるけど、
ifをツラツラ書くと、その都度比較を行い、
無駄な処理をする事になる。
処理が重くなる。
>>912
ライセンスの再配布に関する条項で許可されてるなら、という但し書きを忘れちゃダメよ。
>>913
Java初心者は歓迎だけど馬鹿はお呼びでないよ。
>>910も書いてるけどJava以前の問題。
そんな必死になって責め立てるほどのもんでもなかろうに。

中級者面したVector馬鹿の方がよっぽど有害
917906:04/09/10 01:48
>>908
FileSystemView fsv=new FileSystemView();
と書いてみると、
Cannot instantiate the type FileSystemView, since it is not a concrete class
とのことで、コンパイルできません。
以下に確認用のコード貼ります。import文なんかは省きます。
public class PathGetter
{

public static void main(String[] args)
{
FileSystemView fsv=new FileSystemView();
File[] str0=fsv.getRoots();
for (int i=0;i<str0.length;i++)
{
System.out.println(str0[i]);
}
  }
}
FileSystemView fsv = FileSystemView.getFileSystemView();
>>916
お前もたいがい頭悪いな。

いいか?if〜elseとif〜elseif〜elseの違いがわからないと言う、それそのものに対して馬鹿といってるんじゃない。
これだけならまだ初心者の範疇と言われればそうかも知れない。

こんな質問すらわざわざ2chに書き込んで答えてもらうのを待つしか
解決法を知らない奴に対して馬鹿と言っているんだ。
筋金入りの教えて君じゃねーか。
elseifのことだけで書き込むような奴だぞ。次はswichか?ループ文か?

だからjava以前の話だと書いたんだ。
まー綴り間違えた事に突っ込まれるんだろうけど
>>919
最初からそう書かないからいらんやり取りが続くんだ。

さっきからこのスレ、理由を省いて叩くだけの奴のせいでくだらんことでスレが伸びてる。
922デフォルトの名無しさん:04/09/10 03:06
>>907,911,913
マジ感謝!
基本が大事だということが身にしみて分かりました・・・
923906:04/09/10 04:41
>>918
駄目です…
そのようにしても
「FileSystemView.getFileSystemView cannot be resolved or is not a type」
と怒られます。
とりあえず明日またがんばってみて駄目なら又来ます。
レスくれたお二方(一人?)ありがとうございました。
925デフォルトの名無しさん:04/09/10 10:55
PKCS12形式のクライアント証明書をJavaで使える形式にするにはどうするんですか?
926デフォルトの名無しさん:04/09/10 12:39
JPanelにJScrollPaneを付けたのですが
画面の大きさを変えたりしてもスクロールペインが活躍してくれません。
パネルの大きさが認識されてないのでしょか?
ちなみにレイアウトマネージャとしてボーダーレイアウトを使用しております。
927デフォルトの名無しさん:04/09/10 12:39
>>923

クラス名を紹介されたら、「どのパッケージのクラスか」は
自分で確認しよう。そしてAPIドキュメントも読もう。
928デフォルトの名無しさん:04/09/10 13:04
println の ln はなんのことでしょうか。
>>928
Lineの略じゃねーの?
>>927
>>908 で完全限定名を紹介されてるから、
どのパッケージのクラスかは自明のはず。
>>930
なのにダメですといってるから>>927の意見なんだろ。
オーバーライドって英語で書くとなんですか?
overwrittenだとオーバーリトゥンですが。
>>932
override
934デフォルトの名無しさん:04/09/10 14:27:09
物凄い初歩的な質問で恐縮ですが
KeyTypedイベントが起きたときに、"w"キーが押されたら"w"と出力したいのですが


keyTypedメソッド内で

if(e.getKeyChar().equals("w"){
System.out.println("w");}

とすると、
getKeyCharの後で「charは間接参照できません」
というコンパイルエラーが出てしまいます。
間接参照というものが理解できないんですが
どうしたらいいんでしょうか
935934:04/09/10 14:28:46
カッコが1つ足りませんでした
if(e.getKeyChar().equals("w")){
System.out.println("w");}
です。
他に、char型の変数keyinput1を作り
keyinput1 = e.getKeyChar();
if(keyinput1.equals("w")){
System.out.println("w");}
としても駄目でした。
equalsが駄目なのかと思い
keyinput1 = e.getKeyChar();
if(keyinput1.compareTo("w")){
System.out.println("w");}
でも駄目でした

936デフォルトの名無しさん:04/09/10 14:42:57
もしかしてthisキーワードって二通りの使い方がありますか?

・メンバ変数とローカル変数を区別するときに使う
・メソッドを呼び出したクラスオブジェクトの参照を保持する
937934:04/09/10 14:43:15
自己解決しました
if(e.getKeyCode==KeyEvent.VK_W){
System.out.println("w");}
938デフォルトの名無しさん:04/09/10 14:43:19
>>934
悪いことは言わないから入門書一冊買って読め
プリミティブ型と参照型の区別もついてないのに背伸びしようとするな
939934:04/09/10 14:52:45
>>938
よくわかりませんが、夏休みの宿題だからそれどころじゃないんです
まあ、自己解決したし入門書はいらないと。
940デフォルトの名無しさん:04/09/10 14:56:27
すげーな、どうやって解決したんだ?
941デフォルトの名無しさん:04/09/10 14:59:47
>>936
そこに挙げられたものは2通りのうちのひとつでしかないな。
両方同じ。
942934:04/09/10 15:06:22
パンがなければお菓子を食べればいい
もとい
入門書がなければAPIを読めばいい
です
943デフォルトの名無しさん:04/09/10 15:12:18
APIを読むってソース読んだのか。
944デフォルトの名無しさん:04/09/10 15:15:48
だったら初めからAPI Specification読めばいいじゃねーか。
945デフォルトの名無しさん:04/09/10 15:34:10
JavaDoc嫁。
946デフォルトの名無しさん:04/09/10 15:38:46
夏はまだ続いてる・・・と
947デフォルトの名無しさん:04/09/10 15:47:46
大学で夏休みは9月いっぱいって所もあるしな
948デフォルトの名無しさん:04/09/10 16:17:50
質問です
Javaでテキストファイルの行数を
スマートに調べる方法はないでしょうか?
BufferedReaderでreadLine()出来た回数で調べるのより
良い方法がありませんか?
949デフォルトの名無しさん:04/09/10 16:36:12
改行コードを数えれば
950デフォルトの名無しさん:04/09/10 16:45:34
>>948
その方法で十分スマートだと思います。
951デフォルトの名無しさん:04/09/10 16:48:40
>>950
わかりましたそうします
952デフォルトの名無しさん:04/09/10 16:50:55
それいけスマート
953デフォルトの名無しさん:04/09/10 16:57:14
たまーに訳わからんレスが入るよな。
どうせならさ・・・

!スマート車関機

くらい訳わからないのが良い。
954デフォルトの名無しさん:04/09/10 18:02:48
>>698
> サーバの設定云々も実は不要だったりする。

本当に不要なのか、はなはだ疑問。
MIMEタイプの設定がすでにそのサーバでなされているというのなら、
たしかに不要だろう。

サーバの設定をしなかった場合、
サーバ側がクライアントに返すMIMEタイプはどうなっていますか?
ちゃんと
"Content-Type: application/x-java-jnlp-file"になっていますか?


もしサーバの送るヘッダが上記の物ではないにもかかわらず、
>>698の環境において、JavaWebStartが起動するというのなら、
それは>>698の使っているブラウザなどのクライアント側が、気のきいたよくできたやつで、
拡張子などをたよりに、 JavaWebStartを起動してくれているだけではないだろうか。

つまり、サーバの設定を正しく行わないと、
気の聞かないトーマスな環境では正しく動かない恐れがあるのではないか。

//それいけスマートとはまた古風な。
955デフォルトの名無しさん:04/09/10 18:55:37
>>926さんへ。
私の場合ですが、JPanelに画像を書いていたときそういうようになったことあります。
JPanelをDimension 使って、表示するとできました。
参考になればよいですが。
956デフォルトの名無しさん:04/09/10 20:04:03
失礼します。いきます。

オブジェクトの受け渡しは、双方解釈できての
Serializable#writeObjectからSerializable#readObjectだけで通るものですか?
かなり不安いっぱいです。試したいのですが、まだ手元にAIXきません。見たこと触った事もありません
要塞見たいのがくるのでしょうか、要塞かどうかはいいです。
957デフォルトの名無しさん:04/09/10 20:27:21
>>956
ちゃんと日本語しゃべれ
958デフォルトの名無しさん:04/09/10 21:00:54
MSN%A5%E1%A5%C3%A5%BB%A5%F3%A5%B8%A5%E3%A1%A1
%B2%BB%C0%BC%A5%C1%A5%E3%A5%C3%A5%C8%A4%C7%A4
%AD%A4%EB%BF%CD%A4%A4%A4%EB%A4%AB%A4%CA%A1%A9

だれか、このコードを日本語化する方法知りませんか?
959デフォルトの名無しさん:04/09/10 21:08:51
>>958
>MSNメッセンジャ 音声チャットできる人いるかな?

URLエンコードされた文字列。
Javaと関係あるのか?
http://www.tagindex.com/tool/url.html
960デフォルトの名無しさん:04/09/10 21:54:33
二つほど質問です。

1.もともとAWTで作ってたものをSwingに作り変えてるのですが、
  コンパイル時に推奨されないAPIを使っていると出ます。
  (実行自体は問題なくできる)
  で、具体的にどこが推奨されてないかを特定する方法というか、
  ヒントみたいなものをいただけるとありがたいです
  (ちなみにJavaのバージョンですが、NetBeansの3.6にバンドルされてきたやつで分かるでしょうか?)

2.1と同じもので、AWTの時には、メニューが正しく表示できていたのですが、
  Swingに書き換えてから自家製のコンポーネントの下に隠れるようになってしまいました。
  (JButtonに対しては隠れていない)
  なぜでしょうか?

  ちなみに自家製のコンポーネントは、全部AWTで出来てるので、その辺が関係してるのかな?とも思いつつ
  他に聞けるところも無いので、ここで質問してみました。
  よろしくです。
961デフォルトの名無しさん:04/09/10 22:05:21
AWTとの混在は厳しいよ
Swingがなんでlight weight componentと呼ばれてるか知っているかい
Swingのコンポーネントはそこにあるように見えて実はない
実際にはデータのみを管理してウィンドウに書かれた絵だから
962デフォルトの名無しさん:04/09/10 22:16:43
レスどもです。
やっぱりAWTとの混在がやばげですか。
正直自家製のコンポーネントのほうはかなり作りこんじゃったので
Swingへ書き換えるには相当な気力が必要なんですよね。。。トホホ

メニューのとこだけでも回避する方法ないですかね?
963デフォルトの名無しさん:04/09/10 22:19:55
どういったコントロール使ってるかによる
AWTコントロールでカスタマイズってあんまりできないから
参考程度でさっさとSwingで作り直すがよろし

まぁ、考え方が違うところが多いのでSwingになれるまでがきついかもしれない
なれればSwingでカスタムコンポーネントぺたぺたNetBeansではりつけれるので便利になるけどね
964デフォルトの名無しさん:04/09/10 23:03:29
すいませんおちゃらけました、また弾けるかも知れませんが落着いて書いてみます。

都合でAIXを使う事になりそうでして。ばっさり割愛しますが、Objectの投げ合いをして吸い上げるようです。
そこでjavaの環境依存って実際本当にないのかが疑問になりまして、

とりあえず辿り付いたSerializableのAPIをちゃんと読んでみたわけですが、どうもしっくりこないと言うか
「直列化されます。」と単純に言い切られて納得できませんで、

AIX全くわかりませんが見ればIBMの提供するjdkが一般的だとか、そこでも疑問でして各ベンダで統一してる
上手く言えなさそうです


HelloWork hello = new HelloWork();
hello.writeObject(new ObjectOutputStream(socket.getOutputStream()));
 ↓
HelloWork work = (HelloWork)
(new ObjectInputStream(socket.accept().getInputStream())).readObject();

こんな感じで、helloとworkは同じになれます?環境とか関係ないものです?
説明無理でしたまた出直します。
965デフォルトの名無しさん:04/09/10 23:10:44
>>964
RMI(Remote Method Invokation)で調べてからで直してこい。
966デフォルトの名無しさん:04/09/10 23:10:50
>>960
非推奨メソッドについては、javacからなら-deprecationオプションを付けて
コンパイルすると教えてくれるのだが、NetBeansからどうやるかは知らない。
コンパイラを内蔵しているのではなく外部コマンドとしてjavacを呼ぶように
なっているのなら、与えるオプションを設定する方法はあるはず。

AWTとSwingの混在で、とりあえずメニューが隠れるのを回避するだけなら、
メニューをまだ1つも構築していない状態で、
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
しとくといいかもしんない。

967960:04/09/10 23:41:40
>>963
レスありがとうございます。

 Swingへの書き換えについては、まだ微妙ですが、まとまった時間が出来たらやって見ようと思います。
 (表示する位置とか微妙な調整が面倒なんですよね。。。ちなみに作ってるのは将棋盤です)

>>966
 レスありがとうございます。

 おっしゃるようにNetBeansでは外部コンパイラを使用しています。
 で外部コンパイラのプロパティ(NetBeansで設定可能な)のところでは、
 -deprecationオプションが既に設定済みのようなのです。
 (実を言うと、この推奨されてない云々のメッセージはかなり前から意識していて、
  以前もいろいろ自分でいじくってみた事がありまして、、、
  デフォルトで設定されていたものか、自分で試しに設定したものか、
  今となっては記憶があやふやで良く分からない!)
 こちらはどちらかというとNetBeansの問題なのでしょうかね?

 それからおかげさまで、966で書かれたメソッド書いたら隠れずに表示されるようになりました。
 まだなんで表示されるようになったのか良く分かっていませんが、、、
 (この辺は963さんもご指摘のライトウェイトコンポネント云々を理解しないといけないのかな?)

 いずれは前にも書いたとおり、Swingへ書き換えをやろうと考えていますが、
 取り急ぎ気になる点が解消できました。
 改めて感謝感謝でした。
968デフォルトの名無しさん:04/09/10 23:42:31
質問です
String型は
String str="hogehoge" と文字列をセットできるのに

StringBuffer型は
StringBuffer str="hogehoge" とするとエラーになるのは何故ですか?

また
StringBuffer str1=new StringBuffer("hogehoge");
StringBuffer str2=new StringBuffer("hogehoge");
とすると
str1.equals(str2)がfalseを返すのですが、何故でしょうか?
(String型だとtrueになります。)
969デフォルトの名無しさん:04/09/10 23:54:33
>>968
> String str="hogehoge" と文字列をセットできるのに
仕様。String だけの特例。Integer i = 1 とかもだめでしょ。

> str1.equals(str2)がfalseを返すのですが、何故でしょうか?
> (String型だとtrueになります。)
APIドキュメント嫁。
String#equals
StringBuffer#equals (は実装されてないから Object#equals)
970デフォルトの名無しさん:04/09/10 23:58:39
もしかして、SWT&jfaceって人気ないの?
971デフォルトの名無しさん:04/09/11 00:14:56
>>969
なるほど。
ところでAPIドキュメントって何ですか?って聞いたら
怒られそうなのでやめときます。

String型の文字列プールの例外にはびっくりしました。
同じ文字列なら同じオブジェクトを参照するから
str1==str2がtrueを返すなんて知ってなきゃ分かるはずがない
972デフォルトの名無しさん:04/09/11 00:43:04
973デフォルトの名無しさん:04/09/11 00:50:46
>>971
> str1==str2がtrueを返すなんて知ってなきゃ分かるはずがない
これを知ってんのに API ドキュメントが分からないのか?

それはさておき、ほんとに分かってるのか。
以下の結果はどうなる?

String s1 = "a" + "b";
String s2 = "ab";
System.out.println(s1 == s2);

s1 = "a";
s1 += "b";
s2 = "ab";
System.out.println(s1 == s2);

s1 = new StringBuffer("ab").toString();
s2 = "ab";
System.out.println(s1 == s2);
974デフォルトの名無しさん:04/09/11 00:52:08
とりあえずリテラルという言葉を覚えたほうがいい。
975デフォルトの名無しさん:04/09/11 00:52:53
>>971
ああっ、馬鹿…
976デフォルトの名無しさん:04/09/11 00:53:13
>>973
全部falseのような気がします
977デフォルトの名無しさん:04/09/11 00:57:00
String型のリテラルは一度定義すると変えられないと書いてありました
ただ、単純な+操作だけはできて
別々のオブジェクトをあたかも結合して一つのオブジェクトに見せる
みたいな・・・
978デフォルトの名無しさん:04/09/11 00:57:42
>>976
残念 1 つ目は true。
同一式での文字列結合はひとつの文字とみなされ、
同じコンスタントプールが使用される。
979デフォルトの名無しさん:04/09/11 01:32:45
>>955
ありがとうございます。
解決しました!
980デフォルトの名無しさん:04/09/11 01:48:24
>>973
なんでこれが全部trueになるの?
==はオブジェクト同士の演算なんだからfalseじゃないの?

s1.equals(s2) だったら全部trueになるのは納得行くけど・・・
981906:04/09/11 01:52:12
とりあえず半分解決しました。
人様のアプリのスクリーンショットを見て、
ルート(\)
と書いてあったので、試しにパスに"\\"としてみたら、My DocumentsとRecycle binが
ツリーに現れました。
なぜかMy Computerが出ていませんが…
さらにぐぐってみます。
982デフォルトの名無しさん:04/09/11 01:56:32
>>980
な、何いってらっしゃるんでしょう?
983デフォルトの名無しさん:04/09/11 02:49:28
>>978
ふ〜ん

まぁ実際のところ、ソースん中で
 if(xx == yy){ /* */ } ;//いずれも非プリミティブ(String含む)
って記述みっけたら、書いた奴呼び出して即書き直し命じてもよろしいか?

そんとき、
「残念、同一式での文字列結合はひとつの文字とみなされ、
 同じコンスタントプールが使用されるんですよ。」
とでも言おうものなら、衝動的に殴ってしまってもよろしいか?
984デフォルトの名無しさん:04/09/11 02:51:09
あ;いらね〜か
985デフォルトの名無しさん:04/09/11 03:05:33
>>983
後半はよろしい。
しかし前半は元々そういう意図だったらどうすんだよ
986デフォルトの名無しさん:04/09/11 03:07:53
つーか言語仕様の話だろ。実際のコーディングスタイルなんか自分のところで決めろ。
987デフォルトの名無しさん:04/09/11 07:34:49
つーかよ、大概のオブジェクトは参照アドレスが違うから
特に自分がObjectを継承して作ったクラスのインスタンスは
==で判定しても問題ないよ
問題が出るのは、プリミティブラッパーとか、equals()を
オーバーライドしてるクラス
まあ、言御仕様上は、==をプリミティブ型に限定するか、
または==で,統一する方向で規定してほしかったけどね
プリミティブ型ってのが癌だったな
Javaがでてきた頃はマシンパワーが足りなかったから
こんな仕様にするしかなかったんだろ
988デフォルトの名無しさん:04/09/11 08:05:45
==演算子をシンタックスシュガー扱いにして
コンパイラがequalsで比較するようなコードを吐けばいいのにね。
if (left == right) {...}
をこんな感じで処理とかさ
boolean _b;
if ((left instanceof Object) == false) _b = (left == right);
else if (right == null) _b = (left == right);
else _b = left.equals(right);
if (_b) {...}

そうすると実質演算子のオーバロード状態になるか。
989デフォルトの名無しさん:04/09/11 08:35:34
>>987
>犬概のオブジェクトは参照アドレスが違うから
 ↑ 犬?犬って何だよ!?
www
990デフォルトの名無しさん:04/09/11 08:40:02
>>877の知りたいことは
>>877のような初心者にとって知るだけ無駄な
トリビアな知識だな
991デフォルトの名無しさん:04/09/11 08:46:52
>>954
> >>698
> > サーバの設定云々も実は不要だったりする。
>
> 本当に不要なのか、はなはだ疑問。
疑問があるなら実際にやってみろと。

> もしサーバの送るヘッダが上記の物ではないにもかかわらず、
> >>698の環境において、JavaWebStartが起動するというのなら、
> それは>>698の使っているブラウザなどのクライアント側が、気のきいたよくできたやつで、
> 拡張子などをたよりに、 JavaWebStartを起動してくれているだけではないだろうか。

最近のメーカー製PCはJavaWebStartが標準搭載されているので問題ないことばかりだが。
992デフォルトの名無しさん:04/09/11 08:47:03
>>989
おめー里見八犬伝もしらねーの?
犬概といったら、八犬士のひとり犬概現八のことにきまってるだろ
993デフォルトの名無しさん:04/09/11 08:49:58
>>989
> >>987
> >犬概のオブジェクトは参照アドレスが違うから
>  ↑ 犬?犬って何だよ!?
> www

wwwってなんだよ? ワールドワイドウェブのことか?

それとも、ワイルドワイドウェストのことか?
994デフォルトの名無しさん:04/09/11 08:53:37
>>992-993
あ!?お前ら何言ってるの??
日本語で書いてもらえませんか!?
さっぱりですよ??
995デフォルトの名無しさん:04/09/11 08:57:56
すいません、質問です。
これからJavaをはじめようと思うのですが、コンパイラーというものはどこで売ってるのですか?
デオデオで訊いてみたのですが、売っていないといわれ途方にくれています。
よろしくお願いします。
996デフォルトの名無しさん:04/09/11 08:58:35
>>994

ワイワイウェ〜〜〜〜〜〜〜〜〜〜スト!

                            by ヴィル・スミス
997デフォルトの名無しさん:04/09/11 09:01:00
>>996
あ!?だから、それはなんなんだよ!?
998デフォルトの名無しさん:04/09/11 09:02:58
>>995
> すいません、質問です。
> これからJavaをはじめようと思うのですが、コンパイラーというものはどこで売ってるのですか?
>>1を嫁。リンク先を調べればタダで手に入る。


でさ、デオデオって何?


new Thread(); を立てた
【初心者】Java質問・相談スレッド53【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1094860940/
999デフォルトの名無しさん:04/09/11 09:03:53
>>997
映画
1000デフォルトの名無しさん:04/09/11 09:04:06
Java質問・相談スレは52回を以って終了とさせていただきます。
長らくのご愛顧ありがとうございました。

1000!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。