>>47 そういう話なら種類もへったくれも無く、Eclipse.org
謹製の専用コンパイラで切替不可能。まあインクリメンタル
コンパイル切ってantでjavacやってもいいけど。
>>48 Window -> Preferences -> Java -> インストール済みのJRE
で使うコンパイラ切り替えられるけど、そういうことじゃなくって?
>>49 それは文字通りJREを切り替えているだけ。具体的にはコンパイル時
に参照する標準APIのライブラリの切替と、アプリケーション実行時
に使うVMを選択しているだけ。コンパイラはあくまでもeclipseに
添付されているものが使われる。つーか、いちどJava2SDKを
アンインストールしてコンパイルしてみると良く理解できる。
SDKないのにコンパイルできるから。
どうもありがとうございます。 いろいろ、調べてみると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"見たいな書式) やりたいんですが ありますか?
>>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 は通るんですがね
>>65 すみません自己解決シマスタ
カラム名の別名が微妙に違ってマスタ
逝ってきます
C言語で言うところのマクロ機能を実現するツールのようなものはご存じないでしょうか? とりあえずDebugWriteを埋め込んでコンソール確認しているのですが、 実際に利用する際にはその部分をコメント化したいので #ifdef 見たいなものがあればうれしいのです。
>>62-63 コンパイラ本体はSDK中のtools.jarの中にあるね。
>>62-63 さらに言えば、JBuilder, eclipse, NetBeensなどの
JavaVM上で動く統合環境を使う利点の一つも、そこにあったとおもう。
javac自体がJavaプログラムであるし、コンパイルが終ればJavaVMも終了してしまうので、
コンパイルのたびにJavaVMを起動しなければならない。
現在のJavaのネックは、VMの起動に時間がかかることなので、このロスは大きい。
しかしJavaVMを一度起動すれば、
JavaVMを終了させずに全ての処理を行い続ける統合開発環境には、そのロスがない。
もっとも最近のパソコンなら、javacを起動させても、
JavaVMの起動時間を意識することもあまりないけどね。
>>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
>>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ファイルになりますか?
Ω ΩΩ <な、なんだってー
86 :
デフォルトの名無しさん :04/08/25 18:29
>>83 色々いじってみましたが、もう無理です。
hoge.java.txt を hoge.javaにする方法を教えて下さい。
お願いします。
>>86 コマンドプロンプトで
rename hoge.java.txt hoge.java
ネタで書いてるのなら
2ch来ない方がいいよ。
>>86 それはもうJavaの質問じゃないから、ここのスレの人たちには答えられないと思うよ?
初心者スレとか行ってみたら?
すいません。ご迷惑をおかけしました。
>74 間違えた、エクリプスはsdkのコンパイラはつかわず独自の内蔵コンパイラ使うっ て話をしてた。
>>89 つい先日同じ間違いをやらかした折れには他人事と思えん…
折れもがんがるから、おまいもがんがってくれ
92 :
デフォルトの名無しさん :04/08/25 21:55
Java1.3.?のころと今Javaで文法上で変わったところはありますか?
ありがとう
95 :
cygwinが大嫌い。 :04/08/26 01:56
Java製Cコンパイラが欲しいのですが、既存のもので何かありますでしょうか? あと、Java製のシェルなんてのも探してます。 散々調べてみたのですが、それらしきものが見つかりませんでした。 無ければ、つくります。
96 :
デフォルトの名無しさん :04/08/26 02:00
JPanelの上にJComponentを重ねようとしてもコンポーネントが描写 されないのですがどのような原因が考えられるでしょうか?
>>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
101 :
cygwinが大嫌い。 :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
105 :
デフォルトの名無しさん :04/08/26 03:41
>>99 引数が1個しか取れない
Java厨ってほんとアフォだな。
107 :
デフォルトの名無しさん :04/08/26 06:48
メソッドと,static finalのフィールドだけを定義しようと思った時に、 interfaceの中に作るのと、クラスの中に作るのではどちらが良いのでしょうか? 消費メモリの量、処理のスピードが両者で違ったりしますか?
質問させてください。
現在、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の設定がまずいんじゃねーの
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で設定したのですが。
> 111 Strutsとかの設定ファイルがおかしかったら、Tomcat起動時にエラーが起きますよね? それか実行したときにインスタンスエラーとかに・・
>>113 そうとも限らん。
自分で正しいと思ってるところでも、見直すと間違いが見つかることもあるぞ。
115 :
デフォルトの名無しさん :04/08/26 11:35
JPanelを継承したクラスにpaint()メソッドを付けたらパネルにメニューバーくっついてきたり、 設定した背景色が無視されたりしちゃうんですけど。paint()メソッドの使い方を間違えているのでしょか? ちなみにメソッドの中は特に何も書かなくても同じ現象がおきます。
メニューバーはパネルを置くJFrameのやつです。
>> 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
パネルの上にコンポーネントを乗せたあと、パネルに線を描くとき、 その線がコンポーネント上にあった場合線がそのコンポーネントの上に描かれてしまうのですが これを回避する方法はあるでしょうか? いつでもそのコンポーネントが上にくる感じにしたいのですが・・・
>>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設定してあるだろ。
>>123 レスありがとうございます。
見直したところ、
<form-beans>
に設定をしていたので、はずしたのですが、動きませんでした。
ストラッツコンフィグには
<action-mappings>
に
<action path="/View" type="test.BookViewProcess">
<forward name="success" path="/ItiranView.jsp" />
</action>
しか記述していません。
他に何が原因が考えられるでしょうか?
補足です。 同じエラーです。
>>124 じゃあ、JSPとJSP側で使ってるクラス。
JSP側のStrutsのタグのpropertyとクラスのgetterメソッドの名前が違ってる。
>>126 >JSP側のStrutsのタグのpropertyとクラスのgetterメソッドの名前が違ってる。
を見直したところできました!!!!
本当に本当にありがとうございました。
まだまだ勉強が足りません・・
これをベースに色々勉強したいと思います。
ありがとうございました。
>>127 よく頑張った。感動した。
今後はエラー内容をよく読み、自分で解決できるようになれるよう精進するがいい。
あと、エラーでぐぐったりもしようね。
遅レス失礼 >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
もエラー出てしまいます。
136 :
デフォルトの名無しさん :04/08/26 16:31
>>135 う、そ、それは、、、
j2sdk1.4.2_04
で
MIDP(iAppli)です・・・・
スレ違いですいません、MIDPじゃ出来ないんでしょうか。。
137 :
デフォルトの名無しさん :04/08/26 16:34
あ、すいません j2sdkじゃなくてj2meでした。。。
>>136 できないならJ2MEに入ってないんだろ。あきらめろ。
140 :
デフォルトの名無しさん :04/08/26 16:45
>>138 すいません、ありがとうございました
メソッド作って無理やり0くっつけるようにします。
お手数おかけしました。
>>139 ありがとうございます
simpleDateFormatは使えないみたいですね。。。
調べてから質問するようにします、ご迷惑おかけしました。
141 :
デフォルトの名無しさん :04/08/26 17:12
Enumerationについてよく分からないんですが、このインターフェースは 配列と同じような物と見なしたらいいのでしょうか? 似たようなのにVectorってのもあるし…
>>141 Enumerationは数え上げ用のインタフェースよ。
VectorやHashtableなんかに入ってるオブジェクトどもを一個一個順番に取り出したいときとかに使う。
同じ様なインタフェースでIteratorってのもある。
>>141 java.util.Enumeration は java.util.Iterator の古い奴ね。
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で書かれてるんですか?
いい加減にしなさい。これ以上やるとただじゃおかないぞ。
>>152 ありがとうございます。
> >>これってどこにインスタンスが出来るんでしょうか。
> ヒープ領域にDriverクラスのClass型インスタンスが出来るぐぼへほはぁえろえろ。
うーむ、私の脳味噌では理解不能。
>>どうしてインターフェースのメソッドが叩けるのでしょうか。
> executeQuery(sql)が返してるのは、ResultSetを実装したインスタンス
> であり、型がResultSetなだけなんでぐぼへほはぁえろえろ
そのインスタンスの元のクラスって何でしょうか?
156 :
デフォルトの名無しさん :04/08/26 20:22
>>155 ResultSetインタフェースを実装したクラス。
JDBCドライバごとに違う。
ConnectionもStatementもすべてドライバごとに違うよ。
>>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()とすれば、そのドライバーの
オリジナルインスタンスのクラス名が出る。
>>154 真面目な質問なんですが。
誰か分かる方いませんか?
161 :
デフォルトの名無しさん :04/08/26 21:51
>>160 VisualBasic.NETで書かれています。
162 :
デフォルトの名無しさん :04/08/26 23:21
ahoka
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しる 話はそれからだ
>>166 画像ですか?java3Dでまだガクガクのポリゴンでダサいんですが・・。
マンコがBODYから浮き上がってますし。
169 :
デフォルトの名無しさん :04/08/26 23:54
Strategyパターンを使っていますので、将来的に萌えにも対応できる設計です。 swingみたいにlook&feelだけ萌えに出来る予定です・・。
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も呼び出す必要があるのでしょうか?
修正します Windows2000でsetRowHeightを呼び出すと、行の高さが変わるのですが、 WindowsXPでsetRowHeightを呼び出しても、うまく機能してくれません。 このような不具合ってあるのでしょうか?
>>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 request.getHeader("User-Agent")
request.getRemoteAddr()
request.getRemoteHost()
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の矩形領域は灰色表示されています。 何が悪いんでしょうか?
>>181 (´・ω・`)ショボーン はい、がんばります…
自己解決
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オプションを使ってみては?
追記: javac -target 1.1 *.java で、MSのブラウザ対応形式でコンパイルできる。 ヨカター
うおっ
レス見ずに書いちゃった。
>>190 さんのとおり
レスお願いします
>>190 > 結局、色々あったすえにWinodwsXPにも、今はJavaVMがインストールされているかと。
これはダウト。
セキュリティ修正のために、MSJVM がインストールされている場合のみ修正版がダウンロードできる。
Microsoftのサイトから新規に MSJVM をダウンロードするのは無理。
WindowsXP のパッケージには MSJVM は入ってないし、
プリインストールPC も Sun の JVM 入れてるほうが多いと思われ。
>>194 ありがとう。
俺、SUNがマイクロソフトと和解して
お互いに協力しあうことになったというニュースを勘違いしてたっぽい。
>>189 JPanelのサブクラスを作ればできるのではなかろうか。
paintComponentを上書きすればいいのではないだろうか。
このところSwingの質問が多いけど流行ってるの?
それとも全部同じひとが質問してるの?
Inteface/Implementsについて、 JavaFAQとかも見てみたんだけど、 いまひとつメリットが理解しきれない。 DQNにもわかるような解説のあるサイト、ないですか?
>>197 サイトは知らないが、java.utilのソースを見てみたらいいかも。
Collection関連ね。
>>195 なんか難しそうだけどやってみる
サンクス
>>174 俺XPだけど普通に動いてるよ
>>176 pack使え
各コンポーネントが収まるサイズを計算してフレームのサイズが決まってくれる
その際各コンポーネントには推奨サイズを設定すること
ついでにいえば格子ならJTable使った方がらくかもしれんが
初心者には勧めにくいか
public static void doStaticMethod(){ } みたいな感じで定義するstaticメソッドを使う際、 クラス名.doStaticMethod() と呼び出しますけど、staticメソッドというのは、 インスタンスが1つのみってことなんですか? いや、インスタンスを生成可能なクラス内に staticメソッドがあるとしたら、 そのクラスのインスタンスを複数作っても、 呼び出されるstaticメソッドは、1つのみってことなんでしょうか? 仮にその場合、並列動作している他の複数スレッドから 同時に呼ばれた場合などは、コンフリクトします?
203 :
デフォルトの名無しさん :04/08/27 17:02
>>202 staticメソッドは、インスタンスとは無関係だよ。
だから、クラス名.メソッド()という呼び方をしても、
インスタンスの入った変数.メソッド()という呼び方をしても
動作は全く変わらん。
staticメソッドの内部でクラス変数を読み書きしている場合は、
同時アクセスでコンフリクトする可能性がある。
>>203 なるほど。ありがとうございました。
ソース書いて試してみます。
>>200 ありがとございます。
JPanelでsetPreferredSize(400, 400)
して、
JFrameでpack()
したらうまくできました。
>>172 >
>>155 >
> JDBCドライバでおまじないのようにClass.forName()しなきゃいけないのは、
>
> 単にDriver実装クラスのクラスイニシャライザがDriverManager#registerDriver(Driver)
> を呼び出しているから、というだけの話。
>
> 別のタイミングで同じ事をするようにすれば、Class#forName()を呼ぶ必要はない、
> って知ってた?
うーむ、もう少し分り易くおねがいぽ。
>>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; みたいな感じですが…。
>>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とかも
一致部分に含まれてしまうから、必要部分だけを抽出することはできない
という事でしょうか?
>>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を扱う方法はいくつかある
が、この質問レベルから見てたぶん理解は無理
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できるってことですね
です。っつかゼロ除算なんて滅多にやらんからすっかり忘れてた。
>>245 人の作ったアプレットを?
取得できるようにしてあれば取れるけど。
作った人に聞くか解析でもしてみれば。
為替データってどっかでWSDL使ったお試しサービスやってなかったっけか?
もうひとつ質問させていただきます アプレットを呼び出す記述をrun()で囲むと(Jsp、Servlet側)、 その記述はアプレットの中でも有効なのでしょうか?
221さんに書いて頂いたモノで確かにできました。 深夜にありがとうございました。 しかしそこでまた疑問が生まれてしまうのですが、 (1) System.out.println("おはよう。\nこんにちは。\nこんばんは。"); 上記の文では「¥n」はただそれだけで改行の役目を果たしているのに(結城本からの引用です) (2) System.out.println(0*0+"\n"+1*1); こちらの文ではなぜ「\n」だけで改行をしてくれないのでしょうか? (1)では""の中に全ての文字列が収まっており、 (2)では\nという改行する為の文字列を間に挟んでいるカタチだから…なんでしょうか?
\nは文字列の中に現れないとダメなの。
結城本を読んでるみたいだが・・・
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はインターフェースなのに、メソッドが実相されているのは何故なんでしょうか?
自分なりに考えたことと、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
>>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); }
//続き 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使った時点でずれてるかもしれませんね。
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にも
ならないような。。。
>>267 インターフェイスがインスタンスを作っているのではないよ。
ドライバ内部で生成されたインスタンスを、インターフェイスの型を持つ変数に代入して扱っているだけだ。
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使った方がまじで倍以上速いんですけど
どうしたらいいでしょうか?
やっぱ、
<A HREF=
http://comic6.2ch.net/ymag/ >少
800
年漫画</A><br>
と800というものが入りますね。
なぜだろう?
あと、別にURLConnectionでもいいですよ。
今は実験段階として試してるだけですから。
速さとか考えてないです。
やっぱ、
<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を見てください。
288 :
デフォルトの名無しさん :04/08/29 08:19
>>285 この件とは全然関係ないと思うけど実際にレスポンス確認した?
ただの生HTMLだよ
289 :
デフォルトの名無しさん :04/08/29 08:37
>>287 レスポンスヘッダのContent-Lengthを取得して、
実際に受け取ったバイト数と違ってたら再取得。
そのまえに、URL使ってコード書き直して試してみたら?
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
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 というケースにも対応できるようにするためには,どうマッチングルールを書けばいいのでしょうか? ケース三は無理なんじゃないかと思ったりするんですが….
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 正規表現うんぬんじゃなくて不可能。
データ構造のルールがおかしいのは分かる?
まず一般的な CSV だったら要素にカンマが含まれる場合はダブルクォートで囲む。
ただ、パース側でそんな判定すんのはメンドイから、要素はすべてダブルクォートで
囲むと楽。
>>299 言い忘れた。ダブルォートで囲った場合、要素にダブルォートが含まれる場合は
一般的にはダブルォートを二重化する。
>>303 そうですか,やはりデータを取得・生成した時点でそういう処理をしておく
必要があるのですね
ありがとうございました
>>296 2ちゃんの板は確かチャンクだった。
それ以前にボディの途中に数値と改行がまざってると言ったら、
チャンク以外にないだろ。
HTTP分かってるのか?
私はperlerなのですが、イメージとしては、 1. ResultSet rs で、Resultset型クラス(ResultSetのメソッドと構造体付き)のメモリ空間を予約する。 2. stmt.executeQuery()で、ResultSet型のクラスを返す。 要するに、メモリ領域を確保するためだけに、1が必要ということなのでしょうか。 あと疑問なのは、インターフェースでメソッドの実装をしてしまうのもありなのでしょうか。
1、ResultSet rsでは、アドレス数値を格納するだけのメモリ領域を 確保する。 2、executeQuery()は、ResultSet型のインスタンスを返す。 このメソッド内でResultset型インスタンス(ResultSetのメソッドと 構造体付き)のメモリ空間を確保する。 インターフェースのメソッドだけを実装するクラス、無名クラスを 作るのはよく行われる事。
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の実装クラスが何であるかを気にしなくてもよいという
利点があるわけね。
>>310 まだ学生なんですよ。ちなみに筑波大の理系です。
あなたはどこの大学ですか?w
代々木アニメーション学院ですが、何か?
>>307 あのっさあ、何でショートカットしようとするわけ?
ちゃんと勉強せずにポイントだけわかろうと手抜きするからそうなるんだよ。
初心者入門用の本すら読んでないだろ?
おまけに全然自分でやろうって気がないのな。聞いて全部済ませる気か?
インターフェースでメソッドの実装だの何だの、自分で試して見ればわかることだろうが。
316 :
デフォルトの名無しさん :04/08/29 22:08
>>306 今問題になってるURL分かってるか。2chの板じゃねーぞ。
317 :
デフォルトの名無しさん :04/08/29 22:11
筑波大の学生ってこんなのばっかりなの? 日本の科学技術の未来は暗いなぁ
さて、
>>307 は煽って早く質問の答えを知ろうとする作戦に出たが
その粗末な煽りかたで作戦は失敗に終わり、
このスレでは教えてもらえなくなったわけだが。
>>315-318 もう二人の方に教えてもらったからいいですよ。
理解できました。物事のポイントを押さえる事の何が悪いんですかねぇ?
しかし嫉妬は怖いですね。
最後にもう一度聞きましょう。私は筑波の理系です。
あ な た は ど こ の 大 学 で す か ?
321 :
デフォルトの名無しさん :04/08/29 22:43
高卒の奴はこの板から出てけよ。(禿藁嘲笑)
>>320 俺は中卒だが、少なくともお前よりは人に質問するときの心得はある。
大丈夫か? 筑波大の理系は。
324 :
デフォルトの名無しさん :04/08/29 22:47
ファイルダイアログからTransferHandlerでドラッグ&ドロップした ファイルを、JListのある特定のセルに落としたいのですが ドラッグ中のマウスカーソルがファイルダイアログの外に出た後の マウスカーソルの位置の取得方法が分かりません。 どうすれば位置が取得できるのでしょうか?
>>323 中卒の嫉妬って怖いですね。
あなたは、この板に居ていいと思ってるんですか?
筑波の恥さらしめ。消えろ。
>>325 この板? どういう意味?
今はフリーSE で色々な企業まわって業務 SE や PG に業務モデリングや Java の
教育してる身だから Java 初心者が何を知りたいか、この板は勉強になるんでね。
まー、筑波大のあんたは業務系なんか関係ないか知らんけどね。
自分で動かないで他人に頼りっぱなしを「何が悪い」と開き直り、 学歴を振りかざして優越感丸出し。 本当、あんた筑波の恥さらしだよ。頼むから二度と来るなよな。
330 :
デフォルトの名無しさん :04/08/29 23:29
>>320 筑波のパチンコ屋「大学」ですか?それとも筑波大の敷地に入りましたか?
筑波大気分味わえて、よ か っ た な 。 小 卒 ! !
ただの学歴煽りだろ。放置しとけ。
333 :
デフォルトの名無しさん :04/08/29 23:51
いや〜俺マサチューセッツ工科大卒なんだ・・・ *言うだけなら誰でも*
筑波大ってそんなに良い大学なの?? あまりいろんな大学のことは良く知らないんだけど…
彡川川川三三三ミ〜 プウゥ〜ン 川|川/ \|〜 ポワ〜ン ________ ‖|‖ ◎---◎|〜 / 川川‖ 3 ヽ〜 < 筑波大だけど文句ある? 川川 ∴)д(∴)〜 \________ 川川 〜 /〜 カタカタカタ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \妄想命_ | | |__| | \ |つ |__|__/ / / ドキュソ氏ね | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
>>334 *言うだけなら誰でも*
筑波大は一応国立(くにたちじゃないよ)だから。
もまいら全員マ板逝け。
筑波の名を出しただけで、こんなにもレスが伸びるとは みなさん、本当に私に嫉妬してるみたいですね。 そんなにうらやむ事じゃないですよ。どうぞあなたたちも 勉強して筑波に入ってください。一応年齢に関係なく誰でも 受験資格はありますからね。
>>338 言うだけなら誰でも。
まあ俺はマサチューセッツを首席で卒業したから君とは格が違うのだよ。格が。
筑波だか竹馬だか知らんが日本の大学で偉そうにしている愚民どもが。
俺は大学院出たよ。
俺はMITの教授だよ
俺はイェール大だ。MITにはかなわんな。。。
俺カリフォルニア大バークレー校だ。
俺は筑後川波力発電大
>>338 脳内校、略して筑波大だ。
俺は神大だ。
俺は神。俺こそが神。
×神戸大学 ×神奈川大学 ○神大学
>>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ならアレだな。脳内筑波大君は消えたの?
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
>>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("よっつ目");
//続く
//続き 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
こんにちは JLabel jL = new JLabel("ボタン"); jL.setSize(300,20); jL.setBackground(Color.GREEN); 上記のソースでビルド・起動しても、 JLabelのバックグラウンドカラーが変わりません。 試しに、フォアグラウンドカラーは変わりました。 jL.setForeground(Color.GREEN); JLabelのバックグラウンドカラーを変えるためには、 何か他に手続きがいるのでしょうか?
そういう時は、setOpaque(true)だ。 Javaをはじめて3ヶ月。やと人の役に立てたような気がする。
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
jdkのsrc.jarをかち割ってjavadocかますとどえりゃー事なります。 どつく作った奴のスペックはどんなんなの!自分のマシンjava.beanでもうへこたれます。 2THzの2TBぐらいいるでしょこれ、 privateなもんまでドキュメント化されてるのどっかで見ませんでしたか?
386 :
ケン ◆KENNYY/YXo :04/08/30 15:57
(ケン ´・∀・`)ヌルポ
>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 じゃ、俺はダウンロードしたらお前の 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とか入りません?
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
>>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でバイナリを受け取るのって、実は文字を受け取るより簡単だと思う
ただサンプルは少ないかもな
>>425 >>426 ありがとうございます。
良く解ってないのですが、頑張って調べていきたいと思います。
428 :
デフォルトの名無しさん :04/08/31 15:46
正規表現についてお尋ねします。 String TestString = "123abc456"; このTestStringの中に、"abc"が入っているかどうかを 判断するにはどのようにしたらよいのでしょうか?
430 :
デフォルトの名無しさん :04/08/31 16:29
スレ違いって訳でもないよ。 TestString.matches(".*abc.*") でOK
単に文字列が入っているか調べるだけなら TestString.indexOf("abc")で-1が戻ってないか判定するだけでもよさそう。
432 :
デフォルトの名無しさん :04/08/31 16:52
>>430 レス有難うございます。ご指摘の通り試したところうまく動作しました。
Perlで正規表現使ってたんですけど、Javaとの違いにまだ慣れてないみたいです。
勉強します_| ̄|○
>>431 う…、そう言われればそうでした。
どうしてコンパイルすら通らないんでしょうか? 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); //続く
//続き 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から再インストール
好きな方を選べ
コントロールパネルからアンインストールできないんですか?
>>440 ・該当のレジストリを消す。
・インストールディレクトリ(JDK)を消す。
・システムディレクトリの java.exe とか(JRE)も消す。
・窓の手とかでアプリ追加/削除のエントリを消す。
で、アプレットが動かなくなると。
442 :
デフォルトの名無しさん :04/08/31 20:12
質問させてください。 今Javaでアプリケーションを作ってみようと思っています。 GUIに使うものとしてswingを考えていたのですが、 動作が遅いと聞いたので、AWTとどっちがいいか迷っています。 AWTとSwingってそこまで速さに違いがあるのでしょか? ちなみに作るコードは500KB位と考えています。 どうかよろしくお願いします。
>>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
449 :
デフォルトの名無しさん :04/08/31 21:00
>447 javaプログラムでイベントを受けた際に >444のような処理を行いたいんです。
>>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で吐き出されているの?
他の手段で確認した?
ほんとはcontent-type: textのコンテンツは改行 コードは<CR><LF>ってことになってるから0x0aで 送ってもらうこと自体がアレ。みんな守らないから クライアントも0x0aも想定してコード書かないと いけないけどね。
>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でうまく全角文字に変換されません。 引数に与える文字コードが間違っていますか?
>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でうまく全角文字に変換されません。 引数に与える文字コードが間違っていますか?
>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にはオブジェクトへのポインタが入るのでしょうか? それとも追加するオブジェクトのコピーが生成されるのでしょうか?
vectorと小文字で書かれているからSTLのスレか何かと思ってしまった。 内部では配列に代入しているだけなので、あなたのいうポインタです。 コピーを生成して代入していると仮定すると、Vectorに格納されるすべ てのインスタンスは、Cloneableを実装しているか、Serializableを実装 しているか、といった限定が付きそうなものですが、実際にはそうでは ありませんね。
>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 こういう人って文字コードとか文字幅とかどう考えてるんだろ?
たとえば帰ってくるデータが 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) とエラーが発生するようになりました。 どうしたら解消しますか? ご教授お願いします。
ありがとうございました!!!
>>478 様のソースで完璧に問題なく動きました
ちなみにエンコーディングはサーバーで処理するんで考えなくても大丈夫です。。。
みなさまありがとうございました。
>>484 30byte目がマルチバイトの1バイト目だったらどうするとかなんも考えてないのね。
まあ474の視点で問題ないならいいや。
サーバー処理で30バイト目にはマルチバイトの1文字目は来ない設定でやってるので大丈夫です 度々説明が足りませんでした、、、とにかくありがとうございました!
487 :
デフォルトの名無しさん :04/09/01 22:45
なんで Swing の入力検査ってイベントじゃないんですか? JComponent#setInputVerifier(InputVerifier iv) で入力検査を実装できますが、 なぜ JComponent#addInputVerifyListener() のようにしなかったのでしょうか? イベントになっていないからだと思いますが、ほとんどの IDE の GUIエディタが この入力検査のスケルトンを吐いてくれません。めんどくさいです。
まぁ1.3から導入と言うところからして完璧後付だし、 setなのでプロパティのところで簡単に出来るだろ
490 :
デフォルトの名無しさん :04/09/02 02:17
iアプリですが、低レベルAPIでgifアニメの使用はできますか?
491 :
デフォルトの名無しさん :04/09/02 06:45
おまいぐらい低レベルだと無理
492 :
デフォルトの名無しさん :04/09/02 06:53
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関連の本とか読んでないのか?
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
ぬるぽ
>>499 無駄な知識は増えました。
プログラム系のスレの特徴は書き込みを見て、
あなたみたいに技量をプロファイリングする人が多いです。
これは、他の板には少ない大きな特徴です。
人付き合いが下手で理屈っぽい人が多いという、
プログラマーの傾向がよく出てます。
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
>>516 初心者ならエディタ+javacで頑張るのもいいんじゃないかな。
eclipse が重い? バカ言うなって。 eclipse が重いってことは、作成したプログラムも重いってこった。 素直にパソコン買い替えとけ。
たぶんwin32ネイティブも最近のアプリならヘビーすぎてきついだろうな もちろんIEは3までだよな
>510 DevBoosterつーのがあるぞ。なかなかいい。
>>517 初めはそれで頑張らないと勉強にならないっていうのも見たんですけど、
やっぱりエディタでしこしこ書くのは辛いんですよね。まあそんぐらい頑張れって話なんですが。
>>518 有り難うございます。試してみます。
>>520 netbeansも重くて無理でした。
>>523 有り難うございます。早速調べてみることにします。
メモリぐらい差せ。 NetBeansは192MBからだぞ。使えるのは。せめて128MB。 ただ、メモリ128MBあって重いといってるなら、我慢して使え。 補完もないエディタでしこしこと無駄な努力するのは、べつにJavaの勉強にはならないよ。 javacでコンパイルも、コマンドプロンプトの勉強にはなるだろうけど、あまりJavaの勉強とは関係ない。 使うライブラリをちょっと増やすとjavacはめんどくさくなるし、antは初心者が最初から使うにはどうかと思うし。 単純な入力ミスで悩むなら、補完やエラー表示のあるエディタ使って、他のことで悩む方が有意義。
>>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で何を使ったら重たいのだ?
念のため補足しておくけど、入力のレスポンスは、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するから。
>>523 DevBooster軽かったです。しばらくこれを使ってJavaの勉強をしてみようと思います。
まだ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");
}
}
}
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]));}}}
>547 java.lang.reflect.Method#getReturnType()なるほど リフレクションっての理解に時間がかかりました。もう5時です。 これってすさまじくないですか?いやー聞いてみるものでした。すんばらしい情報ありがと おもしろくて試しに色々やっちゃいましたよ。結論は多用すると地獄ですが これ以外に利用法ないです?さらっと探すとないんだけど、もしVoidってこれだけの為にあるの? さてもう5時です。
こんにちは AWTにCanvasがありますよね このCanvasをJPanelにaddして、そのJPanelをJScrollPaneにsetViewportViewしたんですが、 スクロールさせると、スクロール範囲外にもCanvasの内容が描かれてしまいます。 Graphicsクラスを使い描画できるSwingのクラスのクラスはないのでしょうか? おそらく、AWTとSwingとがかみ合わないからだと思うのですが。
//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使った方がいいかと思われ。
ガイシュツだった
>>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はサブクラス化しないとダメだよ。
>>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 デバッグっていうか、何がどこで起こってるかわかるだけ。
> タブ区切りのテキストファイルの、例えば 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 言語をメジャーにして金儲けするのは自己満足ではないのか?
言語談義はスレ違いです(はぁと
再びアドバイス願います。 例えば次の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
>>593 揚げ足というか・・・ケアレスミスじゃないだろ、明らかに。
どうみても、インスタンスあたりの理解不足だ。
勝手にファイル数分繰り返せっちゅうねん。
>>594 そうなのです、その書式だとExceptionが・・。
どなたか、RMIでcodebase指定をftpでやった人いません?
やっぱanonymousでしょうか。。
正規の表現では「インスタンスの生成」ですね。失礼しました。
>>593 スクリプトて「シェル・スクリプト」のスクリプト?聞いたことはあります。
ところで「awk」って何ですか? Googleで調べる際には「スクリプト awk」
十分ですか?
僕が理解できる範囲のものであれば、awkとやらでやってみます。
でもやっぱ、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節不要だからとっぱらっていいよ
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を定義してるから
いらないだけ
>>565 またもや仰られた事への理解に時間がかかりました。関心させられるばっかりで、奥が深い。
教えるのうまいね夢中で調べちゃったよ、全てをObjectとして表現でるぜjavaすげー、考え方が広くなった、ありがとう
俺java厨してる?危険?
java.langパッケージってすごい洗練されてんですね。興味がとまんねーのでここから出直してきます。
>>608 BufferedReader#readLine()でIOException起こるよ。
あとRuntimeExceptionも。
throws IOExceptionを外しましょう、と
外したら自分で例外処理かかなきゃなんねーべ
あほか、finallyは要るだろうが。
>>601 のtryブロックが何のためにあるのかも理解してないな。
こういうやつが例外セーフでないコードを書くわけだな。
finallyは例外処理とはいいません。でも必須
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 > 使い捨てだろうが重要なプログラムだろうが関わりなく「不要だ」にみえたが…
極端なやつだ。
誰かまとめろよ
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を使わないでとってくる方法はないのでしょうか?
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に格納されているようですが・・・それを取り出す手段。。。ってことになるとおもうのですが。。
解決策ご存知の方ご教授ください
>>635 あ・・・!そうか!
nullを渡したところできました。
ありがとうございます。
>そんなもん処理による。 んなこた分かっとるって何度言ったら…
>>638 すいません。。(汗
こういうのはやはり外部ファイルに書き出す、、、とかでしょうか。
641 :
デフォルトの名無しさん :04/09/05 19:36
ウフフ
643 :
デフォルトの名無しさん :04/09/05 19:40
>>640 URLとサーブレットのマッピングはweb.xmlでやれるだろ?
なんでそんなことやってんの?
>>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で受けてから振り分けてる
そうした方が楽だよ
リフレクションのことは忘れて一から設計しなおせ
>>645-646 自分もそうしたいのは山々なんですが・・。
実はこのプロジェクトには後から入りまして、、
ソースを見て「なんじゃこりゃー」と叫んでしまいました。
フレームワーク的な考えは一切なく各々のコーダーが
各々のやり方でコーディングしていてValidationなんかもしてなかったのです、、、
struts導入を提案しましたがあえなく却下され
(これは私の知識と経験不足のせいですね)
自分は今のソースになるたけ影響を与えずにフレームワーク的なものを
導入することを許されたのみでした。。。
幸運なことにFilterには手を付けていなかったようなので
そこを拠点になんとかいろいろやろうと奮闘しているという状況だったりします。
自分自身もJavaは2ヶ月程度の経験なのでどこまでやれるかわかりませんが。。
648 :
デフォルトの名無しさん :04/09/05 20:03
>>647 サーブレットからサーブレット呼ぶのは簡単だよ
ひらめいた?
大変なのはわかったが混乱に拍車をかけようとしているように思える。 まぁ頑張れ
>>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()とかなかった?
>>633 がやりたいことは
ただのリンク張りか?
だったら
request.getContextPath() + / + web.xmlで指定したディレクトリ名とか + サーブレット名
で十分。ドメインなんていらない
あとはweb.xmlをどうするか。
662 :
takka :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でログを取れ。
>>658 ,661
いや、、、
最終的には単に
chain.doFilter
しちゃうのです。
そのまえにFormBeanのクラスをとってきて
FormBeanをリクエストのパラメータから自動構成して
(ここでValidationもやっちゃうValidationがNGだったら共通入力エラーjspにforwardする)
setAttributeで構成されたFormBeanオブジェクトをセットして
サーブレットではそれをとりだすだけ。。ってなことをやりたいのです。。
>>665 >
>>658 ,661
> いや、、、
> 最終的には単に
> chain.doFilter
> しちゃうのです。
全然pathとか関係ない話じゃないか
668 :
デフォルトの名無しさん :04/09/05 22:32
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でそれぞれを取り出した時、 取り出した数字や文字列に配列みたいに変数名で順番に番号をふることはできますか?
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で圧縮ってどういうことでしょう?
>>689 JSmoothというのもあるので、試してみると面白いかも。目に付く機能は以下のとおり。
・JVMの自動検出(Sun JVM、MSJVM、ソフト組み込みなどから選択可能)
・JVMが見つからなかった時に、ブラウザで指定したURLを開く機能
これでJava Pluginのダウンロードサイトを指定すればJVMのインストールが簡単になるはず。
ライセンスがGPLだけど、このソフトで作った実行ファイルはGPLの対象にならないのもうれしい。
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 それはファイルの内容での検索だと思われ。
>>690 ソフト紹介ありがd。
漏れも今まで実行可能jarで配布してたんだけどなんかjarのダブルクリックって違和感がある・・・
JWSってのは使い方知らなかったけど面白そうなので今度調べてみます。
そういえばeclipseもjavaで作られてるって聞いてるけど、インストーラー付のexeもjavaプログラムでできるのかな。
エクリプスのexeって、プラグ印を全部クラスパス指定してなんか起動するだけじゃないの?
>>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 で対応するしかないんでしょうか?
714 :
デフォルトの名無しさん :04/09/06 16:42
はじめまして、JAVAプログラマーの見習いをやっています。 見習といっても、何ができるでもなく つい1週間ほど前に会社からプログラマ転向の命令が下りました。 現在は教本を使い(スタートアップJava 技術評論社) 本の通りにプログラムを作ってみたりしていまして 一応、空のウインドウを作るところから初めて 多少本を見ながらですが、if文、for文までは使えるようになりました。 ですが、いまいちしっくり来ません。 なんというか、メモ帳にタイピングの練習をしてるような?気分なのです。 とりあえず、Javaと言うものの概念(クラスやオブジェクト指向)は なんとなしに解ったのですが、肝心のプログラム自身を 何を作ったらいいのか、どう練習や勉強をしたらいいのか解りません。 先輩の方々はどういう勉強法をされましたか? またどんなプログラムを作って勉強されていましたか? 馬鹿げた質問かもしれませんが 会社からは「独学で覚えろ」としか言われてませんので 本当に解らないのです;; よろしくお願いいたします。
>>714 まずは自分では作らず、人のプログラムをいじることから始める
>>714 まず、自分がほしいと思うようなソフトを思い浮かべる。
難しいのは避けて、こういうのあったらちょっと便利〜と思える物。
それを作るために、どういう処理が必要なのか。
どういう事を覚えないといけないのか。
それらを目標に勉強してみては?
もしくは、サンプルとかで載ってる簡単なツールのソースを参考に、
そこから自分の気に入るように改良したりするのも勉強になるし。
717 :
デフォルトの名無しさん :04/09/06 19:45
質問させてください。 JAVAから外部プログラム(UNIXのシェル)を実行して、 その外部プログラムが終了する(戻り値を得る)までJAVA側は待機する にはどうしたらよいのでしょうか?
↑ 言い忘れました。外部プログラムはCOBOLです。
CORBAでも使うとか。
CORBAですか! 標準のJ2EE APIだけじゃ到底無理なんですか?
>>717 java.util.Process#waitFor
java.util.Process#exitValue
まちがえた。java.langだからなんもせんで使える。
>>722 おお!
これならなんかできそうですね!
いや、まだ設計段階なんで、試すことはできませんが、
「できるかどうか」だけ知りたかったんです。
ありがとうございました!
マップチップを使ったタイリング表示を上手く行きませんどこかコードの記述が間違っているのでしょうか? 二次元配列の要素数をランダムで入れたときは表示されるのですがコメントで消してある二次元配列の方を使うと、まったく表示してくれません どの辺が間違っているのか助言の方をお願いしたいです。 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次元配列を同描画しようとしたの?
>>712 結局、自分のやりたいことはVelocityのバグに阻まれているらしかったのでパッチを作った。
取り込まれるかわからんけど、VelocityのBugzillaに登録しておいた。
728 :
デフォルトの名無しさん :04/09/06 21:43
>>724 ていうかjava.awt.image.MemoryImageSourceのjavadoc見れ
サンプルコード付きで使い方説明してあるよ
>>724 map[][] の スコープがわからんのやけど、
それはちゃんと paintメソッドで参照できる場所にある?
スンマセン何を作っているか書いてませんでした
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 です。 既出のものかもしれませんが、よろしくお願いします
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 何の本呼んでるか知らないけれどその本捨てた方がいいよ
>>729 733みたいな感じでコードを書いたのですが、どこか間違えているのでしょうか?
ネットや本等で何度みてもまったく同じに模写したのですが・・・・
ランダムじゃなく、自分で二次元配列に要素数を入れた方を画面に出力させようと
すると駄目なんです
736 :
デフォルトの名無しさん :04/09/06 22:40
>732 ・ファイル名がクラス名といっしょになっているか見る ・package指定をしていないならCLASSPATHはとりあえずいらない ・javaコマンドを実行するとき、ちゃんとそのディレクトリに移動して実行する
>>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固有のメソッドは使えなくなる。
こんな馬鹿なことは通常しないので、こんな例を載せるのは糞本。
初心者本じゃなくてアイディア本だったらありかもな。 上手く使えば使える手だし。
>>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 ああ、そうかそうか
つられた俺が悪かった
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();
などというのもバカなことなのですね。
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を使わないようにする。
>>776 返信ありがとうございます。
readLineは使用せずに、readを使用してみましたが、結果は同じでした。
パスワードの入力待ち状態になってしまうようで、帰ってきません。
どうしたものか…
>>777 いやいや、そうではなく。
gnupg側がなんか表示してパスワード入力待ちになると思うんだが、その表示、たとえば「password:」が来たら読み込みを中止してこっちから書き込むようにする。
だから1文字ずつ読み込みつつ、目的とする文字列が来たかどうか判定するのよ。
>>778 残念な事にInputStreamを1文字でも読んだ時点でパスワードの入力待ちになってしまいます。
パスワードの入力部分は別プロセスなんでしょうか…
>>779 Outputのcloseが早すぎ。
flushだけにしておくがいい。
>>780 Outputのcloseを後半にしても動作は変わらずでした… orz
762です。 解決しました。763さん有難うございました。
質問させてください。 jdbc.odbc.JdbcOdbcDriver接続で MDBのデータをSelect文で抽出したいのですが、 Select * form Tabale like '%' みたいなことをしたいのですが、%でうまく検索できません。 エスケープシーケンスでやればいいんですよね? どのようにやるのかわからないので、教えてください。
>>783 select * from テーブル where カラム like '%キーワード%'
あ・・・ 普通にできました。。。 ''←で囲ってなかったせい? なんか3時間ぐらい潰した・・・
間違えた '%'←'で囲っていなかったせいかな? >> 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って文字列しか扱えないんでしょうか?
Javaにvectorなんかあったんだ。
Vectorが扱えるのはObject型 プリミティブ型は扱えない
>>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にして欲しかった。
今なお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も
試して見たいと思います。
皆さん本当にありがとうございました。
>>807 あんな中途半端な同期なんぞに頼られても困る。前世紀の遺物は消えろ
816 :
デフォルトの名無しさん :04/09/09 00:29
つーかJava3発表してAPI一新きぼん
>>815 その中途半端な同期すらしらないで
「Vectorなんて使いませんよ、ArrayListでいいじゃないですか」
といってはまってるあふぉを見たことあるからなぁ
まぁ、Swing使ってるかどうかだろう
しんくろないずど すればいいじゃない
Swingなんか使うかアホ
>>817 Vectorと一緒に消えてください。それがみんなの願いです。
821 :
デフォルトの名無しさん :04/09/09 01:16
>>818 遅いから出来るだけ使わないようにしてる。
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
>>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なのでそれも可。
非キャッチ例外 そんな用語はない。
838 :
デフォルトの名無しさん :04/09/09 13:51
839 :
デフォルトの名無しさん :04/09/09 14:42
>>835 非チェック例外とは、ヌルポなどコンパイル時にエラーが出ない例外であり、
非キャッチ例外とは、プログラム記述者がその非チェック例外をキャッチ
するコードを書かない為に、ThreadGroup#uncaughtException()に
処理が行ってしまう例外。
uncaughtのメソッド名の通り。
>>838 ネタか?ネタなのか?
林 晴比古あいかわらず笑わせてくれるな。
>>838 少なくともそれはuncaught exceptionの話ではないな。
>>840 たわけ!
非キャッチ例外は、正式用語じゃ。林先生をバカにすると承知しないぞ。
>>839 ウソではないが正しくもないな。
単純にcatchされなかった例外のことをuncaught exceptionと呼ぶけど、非キャッチ例外とは言わないと思う。
普通に「キャッチされなかった例外」
>>842 バカになんかしていない。
ネタに対して笑わない方がしつれいだぞ。
芸人のネタに気づかないのもしつれいだぞ。
結局835は、またしても例の釣り氏だったと。。。
だいたい非キャッチ例外だと日本語として意味がおかしくないか? キャッチ例外に非ずってことか。
なんかよくわかりませんが、「非キャッチ例外」でグーグルで検索しても1件しかヒットしないので、 メジャーじゃないことはわかりました。
誤用っつーか uncaught exception を直訳しただけっつーか。 他の文書と用語の統一をしようとかいう配慮が欠けてるのは確かだけど。
>>850 どうみても、unchecked exceptionを非キャッチ例外と書いてるのだが。
ちゃんと検索したのか?
byte short int long float double char boolean これらと、Stringが区別される理由を教えてください。
>>852 その方が言語仕様上都合が良いと言語設計者が判断したからです。
っつうか、なぜその仕様になっているかという理由を考えてもしかたない。
そうなっているメリットデメリットを考えるのは意義があるが。
>>852 質問の意味がいまいちわからんが、
Stringは参照型でそこにあがってるのはプリミティブ型だけど。
違いは自分で調べれ。
理由と言われても違うから違うとしか言いようがない。
>>852 の脳内ではPerlやPHPと比較されてんじゃないか?
文字列を表すプリミティブ型があってもいいじゃん!と思ったんじゃないかな
林晴比古。 この人の本読みやすい。
>>857 class TestにjLabel1が無いから。
>>857 jLabel1なんて物がTestクラスに無いから。
_| ̄|○
回答ありがとうございます。 class Test内に Frame1 kita = new Frame1(); kita.jLabel1.setText("test!"); と書いて、エラーは消えるんですが実際実行しても何も起こりませんし、 Frame1をextendsしてもダメでした。 後、jLavel1は同じパッケージ内からだと参照できそうなんですが、私の勘違いでしょうか?(汗
>>863 さん
具体的にどう記述すればよいのでしょうか?スミマセン
>>864 俺の記憶が確かなら・・・
this.jLabel1は存在しないだろう・・・
Frame1クラスの変数をFrame1クラス以外で操作したいのなら・・・
Frame1.* となるのではないだろうか。
>>858 ウソがあって大切なこと書かなくていいなら、だれでも読みやすい入門本書けるね。
>>866 そう?
ちゃんと大切な事も書いてるけど。
って、何が大切な事で、何が大切な事じゃないのかがいまいち分からないけど。
俺には合ってる。
>>865 どうもです。
62 行で static でない 変数 jLabel1 を static コンテキストから参照することはできません。 (62:12)
と出ました。。
>>867 そりゃ、いろいろ書けば、大切なことも中には含まれるだろ。
その中に誰も使わない用語(造語)も含まれているわけだ。
どれが林用語で、どれが公式の用語か、公式じゃなくても通用する用語かわからないような本は、ちょっと問題だな。
ちゃんと(林用語)とでも書いててくれればいいのだが。
あと、レスにも(林擁護)とでも書いてくれれば助かる。
>>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-. で補完リスト一覧が出てきません。 どなたか設定をご存知でしたら、教えていただけないでしょうか。
>>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"オブジェクトは
メソッドをいくつも持っている。一体メソッドの中身はどこに書い
てあるんだろうか?
>>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人だということが証明された。
>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
>>895 どういう意味だ? 書き方が悪いのか。
実装が同じインスタンスを返す。
>>897 うをっ
ほんとだ
この参考書あてにならねーな
>>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も使うのは何か違いがあるのですか?
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で返るドライブのリストが最上位パスなんでしょうか?
>>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 とか使ってくれ。
Java暦半年ってなんだ、半月だよ・・・私は・・・ orz
java歴がどうこう言うレベルの問題じゃないな。
>>902 最初のifがtrueだったとき、後に続くifの括弧の中の比較をするかどうか。
>>905 なかなかイヤなヤツだな。
スレタイの「初心者大歓迎」っての外さないとな。
>>904 とにかく・・・
>>907 とか、
>>911 が言ってる通りな感じです。
特別な意味がない限り、if-else ifを使うべき。
if-else ifだと、どこかで真になれば、そのifブロックから一発で抜けるけど、
ifをツラツラ書くと、その都度比較を行い、
無駄な処理をする事になる。
処理が重くなる。
>>912 ライセンスの再配布に関する条項で許可されてるなら、という但し書きを忘れちゃダメよ。
>>913 Java初心者は歓迎だけど馬鹿はお呼びでないよ。
>>910 も書いてるけどJava以前の問題。
そんな必死になって責め立てるほどのもんでもなかろうに。 中級者面したVector馬鹿の方がよっぽど有害
>>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
マジ感謝!
基本が大事だということが身にしみて分かりました・・・
>>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 はなんのことでしょうか。
オーバーライドって英語で書くとなんですか? overwrittenだとオーバーリトゥンですが。
934 :
デフォルトの名無しさん :04/09/10 14:27:09
物凄い初歩的な質問で恐縮ですが KeyTypedイベントが起きたときに、"w"キーが押されたら"w"と出力したいのですが keyTypedメソッド内で if(e.getKeyChar().equals("w"){ System.out.println("w");} とすると、 getKeyCharの後で「charは間接参照できません」 というコンパイルエラーが出てしまいます。 間接参照というものが理解できないんですが どうしたらいいんでしょうか
935 :
934 :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");} でも駄目でした
もしかしてthisキーワードって二通りの使い方がありますか? ・メンバ変数とローカル変数を区別するときに使う ・メソッドを呼び出したクラスオブジェクトの参照を保持する
937 :
934 :04/09/10 14:43:15
自己解決しました if(e.getKeyCode==KeyEvent.VK_W){ System.out.println("w");}
>>934 悪いことは言わないから入門書一冊買って読め
プリミティブ型と参照型の区別もついてないのに背伸びしようとするな
939 :
934 :04/09/10 14:52:45
>>938 よくわかりませんが、夏休みの宿題だからそれどころじゃないんです
まあ、自己解決したし入門書はいらないと。
すげーな、どうやって解決したんだ?
>>936 そこに挙げられたものは2通りのうちのひとつでしかないな。
両方同じ。
942 :
934 :04/09/10 15:06:22
パンがなければお菓子を食べればいい もとい 入門書がなければAPIを読めばいい です
APIを読むってソース読んだのか。
だったら初めからAPI Specification読めばいいじゃねーか。
JavaDoc嫁。
夏はまだ続いてる・・・と
大学で夏休みは9月いっぱいって所もあるしな
質問です Javaでテキストファイルの行数を スマートに調べる方法はないでしょうか? BufferedReaderでreadLine()出来た回数で調べるのより 良い方法がありませんか?
改行コードを数えれば
それいけスマート
たまーに訳わからんレスが入るよな。 どうせならさ・・・ !スマート車関機 くらい訳わからないのが良い。
>>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 使って、表示するとできました。
参考になればよいですが。
失礼します。いきます。 オブジェクトの受け渡しは、双方解釈できての Serializable#writeObjectからSerializable#readObjectだけで通るものですか? かなり不安いっぱいです。試したいのですが、まだ手元にAIXきません。見たこと触った事もありません 要塞見たいのがくるのでしょうか、要塞かどうかはいいです。
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 だれか、このコードを日本語化する方法知りませんか?
二つほど質問です。 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のコンポーネントはそこにあるように見えて実はない 実際にはデータのみを管理してウィンドウに書かれた絵だから
レスどもです。 やっぱりAWTとの混在がやばげですか。 正直自家製のコンポーネントのほうはかなり作りこんじゃったので Swingへ書き換えるには相当な気力が必要なんですよね。。。トホホ メニューのとこだけでも回避する方法ないですかね?
どういったコントロール使ってるかによる AWTコントロールでカスタマイズってあんまりできないから 参考程度でさっさとSwingで作り直すがよろし まぁ、考え方が違うところが多いのでSwingになれるまでがきついかもしれない なれればSwingでカスタムコンポーネントぺたぺたNetBeansではりつけれるので便利になるけどね
すいませんおちゃらけました、また弾けるかも知れませんが落着いて書いてみます。 都合で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)で調べてからで直してこい。
>>960 非推奨メソッドについては、javacからなら-deprecationオプションを付けて
コンパイルすると教えてくれるのだが、NetBeansからどうやるかは知らない。
コンパイラを内蔵しているのではなく外部コマンドとしてjavacを呼ぶように
なっているのなら、与えるオプションを設定する方法はあるはず。
AWTとSwingの混在で、とりあえずメニューが隠れるのを回避するだけなら、
メニューをまだ1つも構築していない状態で、
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
しとくといいかもしんない。
>>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になります。)
>>968 > String str="hogehoge" と文字列をセットできるのに
仕様。String だけの特例。Integer i = 1 とかもだめでしょ。
> str1.equals(str2)がfalseを返すのですが、何故でしょうか?
> (String型だとtrueになります。)
APIドキュメント嫁。
String#equals
StringBuffer#equals (は実装されてないから Object#equals)
もしかして、SWT&jfaceって人気ないの?
971 :
デフォルトの名無しさん :04/09/11 00:14:56
>>969 なるほど。
ところでAPIドキュメントって何ですか?って聞いたら
怒られそうなのでやめときます。
String型の文字列プールの例外にはびっくりしました。
同じ文字列なら同じオブジェクトを参照するから
str1==str2がtrueを返すなんて知ってなきゃ分かるはずがない
>>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);
とりあえずリテラルという言葉を覚えたほうがいい。
String型のリテラルは一度定義すると変えられないと書いてありました ただ、単純な+操作だけはできて 別々のオブジェクトをあたかも結合して一つのオブジェクトに見せる みたいな・・・
>>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になるのは納得行くけど・・・
とりあえず半分解決しました。 人様のアプリのスクリーンショットを見て、 ルート(\) と書いてあったので、試しにパスに"\\"としてみたら、My DocumentsとRecycle binが ツリーに現れました。 なぜかMy Computerが出ていませんが… さらにぐぐってみます。
>>978 ふ〜ん
まぁ実際のところ、ソースん中で
if(xx == yy){ /* */ } ;//いずれも非プリミティブ(String含む)
って記述みっけたら、書いた奴呼び出して即書き直し命じてもよろしいか?
そんとき、
「残念、同一式での文字列結合はひとつの文字とみなされ、
同じコンスタントプールが使用されるんですよ。」
とでも言おうものなら、衝動的に殴ってしまってもよろしいか?
あ;いらね〜か
>>983 後半はよろしい。
しかし前半は元々そういう意図だったらどうすんだよ
つーか言語仕様の話だろ。実際のコーディングスタイルなんか自分のところで決めろ。
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
>>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 あ!?お前ら何言ってるの??
日本語で書いてもらえませんか!?
さっぱりですよ??
すいません、質問です。 これからJavaをはじめようと思うのですが、コンパイラーというものはどこで売ってるのですか? デオデオで訊いてみたのですが、売っていないといわれ途方にくれています。 よろしくお願いします。
>>994 ワイワイウェ〜〜〜〜〜〜〜〜〜〜スト!
by ヴィル・スミス
997 :
デフォルトの名無しさん :04/09/11 09:01:00
998 :
デフォルトの名無しさん :04/09/11 09:02:58
1000 :
デフォルトの名無しさん :04/09/11 09:04:06
Java質問・相談スレは52回を以って終了とさせていただきます。 長らくのご愛顧ありがとうございました。 1000!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。