古いJavaの入門書は現在でも有効でしょうか? Javaの勉強を始めようと思っています。 Androidアプリを作ってみたいなと思っています。 そのための入門書を探しているのですが、縁あって英語版のHead First Javaと Android Programming: The Big Nerd RanchGuideを入手しました。 共にamazonなどの評価も高く、英語に手こずるかもしれませんが取り組んでみようと思います。 ただ、一つ心配しているのがHead First Javaは出版が10年位前で 明らかに最新のJavaについての記述ではないという点です。 Javaの言語の基礎としてはこれでも問題ないでしょうか? 例えば、文法が大きく変わっていたり現在ではよく使われている機能がJavaに 追加されたりしていますでしょうか? また、Head First Javaが現在では適切な入門書でないなら 現在お勧めの入門書とその理由を教えて下さい。 私の実力はPythonでオブジェクト指向をあまり使わない簡単なプログラムが書ける程度です。 よろしくお願いします。
↧
古いJava入門書の有効性について
↧
署名付アプレットの開発方法
いつもお世話になっております。 署名付アプレットの開発を行った方にお聞きしたいのですが、開発用の証明書はどこから入手しているのでしょうか? 環境:JRE1.3+Swing 機能:クライアントのファイルを操作したい Sunのページ http://java.sun.com/products/plugin/1.3/docs/ja/rsa_signing.html を読みながら試そうとしたのですが、証明書が無いので 結局は試せなかったのです。 PS SSL用の証明書と署名付アプレットで試用する証明書は違うものなのでしょうか???
↧
↧
eclipse.iniが見つかりません。
eclipseを日本語化しようとPleiadesをダウンロードしたのですが、 「eclipse.ini」が見つかりません。 どなたかご教示頂けないでしょうか。 以上、よろしくお願いいたします。
↧
マルチスレッドでのインスタンス変数
http://itpro.nikkeibp.co.jp/article/COLUMN/20070820/279950/ このサイトに以下ような趣旨の記述があり、信じられない気持ちでいっぱいです。 「マルチスレッドのケース(たとえばサーブレットでは、)インスタンス変数はヒープ領域に 保持されるので、複数のスレッドからアクセスされるので情報が書き換えられる場合がある」 信じられないのは、インスタンス変数が書き換えられるということです。 サーブレットではインスタンス変数が共有されるのは理解していますが、 サーブレットから呼ばれるインスタンスで定義されているインスタンス変数も それに該当するのでしょうか。 それとも、サーブレット内だけの話で、サーブレットから呼ばれるインスタンスでは インスタンス変数は独立していると思ってよいでしょうか。 後者の認識ですが、こういう書き方をされると、サーブレットから呼ばれた先でも インスタンス変数が共有されると読めて、怖くて仕方ないです。
↧
同一メソッドに別の機能を持たせる
すみません、ご教示ください。 メソッドの呼び出し元には全く意識させないで、メソッドの機能を一時的に変更する方法はどのようなものがあるのでしょうか? それぞれ別機能のメソッドを定義したクラスをあらかじめ作成しておいて、都合に応じてクラスファイルを入れ替えて(クラス名は同じ)使用するのが一般的なのでしょうか?
↧
↧
ファイルの排他について
はじめまして。 初心者ですが、今非常に困っております。 RandomAccessFileを使用して、ファイルの排他をしたいのですが・・・。具体的に言うと、AがAAA.xmlをOPEN中にBがAAA.xmlをOPENしようとするとAがOPEN中なので、例外処理に飛ばしたいのです。いくら試みても例外処理に飛びません。 <例>(java version "1.3.1.05") try { raf = new RandomAccessFile("AAA.xml","rw"); // OPEN raf.writeBytes(111); // WRITE1 raf.writeBytes(222); // WRITE2 raf.writeBytes(333); // WRITE3 raf.writeBytes(444); // WRITE4 raf.writeBytes(555); // WRITE5 raf.close(); // CLOSE } catch(IOException e) { // 排他制御に失敗. リトライしたい System.out.println("別のプロセス?が使用中") } 心当たりのある方がいらしゃいましたら、ご協力お願い致します。
↧
SurfaceViewの一時停止や再開方法
はじめてのjavaで、はじめてAndroidのゲームを作ってます。 SurfaceviewでThreadを使って簡単なSTGゲームを作ってるのですが (1)端末のメニューボタンを押した時に、ゲームを一時停止したいのですがどうすればいいのかわかりません。 (2)端末のホームボタンを押して中断した場合、すぐに復帰してもゲームが最初からになってしまいます。 ホームボタンを押したら一時的に中断して、復帰したときに途中から続行させたいのですが、どうすれば途中から続行できるようになるのかわかりません。 ググってもちんぷんかんぷんでした!どうか教えてください。よろしくお願いします!
↧
Android ライブ壁紙
ライブ壁紙の設定画面で、画面下に『壁紙に設定』と『設定...』という2つのボタンが表示されている素材がありますが、どのようにすれば2つのボタンが表示されるのでしょうか。 自分が制作したものは『壁紙に設定』しか表示しておりません。 完成形のイメージは (1)『壁紙に設定』と『設定...』の2つのボタンを表示 (2)『設定...』を押すと『他の壁紙も見る』という表示が出ていてそれをタップすると 特定のページ(マーケットやサイト)に遷移するようにしたいです。 どなたか教えていただけますでしょうか。
↧
eclipseでTomcat起動時にエラーがでる
今.eclipseを使用してサーブレットを作成しようとしているのですが、 Tomcatを起動しようとするとエラーが発生し、画面が表示できません。 http://localhost:8080/にはアクセスできるのですが、 エラーは以下です。 2007/10/04 14:45:05 致命的: エンドポイントを初期化中のエラーです java.net.BindException: Address already in use: JVM_Bind:8080 at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoint.java:297) at org.apache.coyote.http11.Http11BaseProtocol.init 2007/10/04 14:45:05 org.apache.catalina.startup.Catalina load 致命的: Catalina.start LifecycleException: プロトコルハンドラの初期化に失敗しました: at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:247) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412) 2007/10/04 14:45:05 org.apache.catalina.startup.Catalina load 情報: Initialization processed in 2714 ms 2007/10/04 14:45:06 org.apache.catalina.core.StandardService start 情報: サービス Catalina を起動します 2007/10/04 14:45:06 org.apache.catalina.core.StandardEngine start 情報: Starting Servlet Engine: Apache Tomcat/5.5.15 2007/10/04 14:45:06 org.apache.catalina.core.StandardHost start 情報: XML検証は無効です 2007/10/04 14:45:07 org.apache.tomcat.util.digester.Digester endElement 致命的: End event threw exception java.lang.IllegalArgumentException: Can't convert argument: null at org.apache.tomcat.util.IntrospectionUtils.convert(IntrospectionUtils.java:975) 致命的: アプリケーションのweb.xml中の解析エラーです java.lang.IllegalArgumentException: Can't convert argument: null at org.apache.tomcat.util.digester.Digester.createSAXException(致命的: 19行の20列目で発生しました 2007/10/04 14:45:07 org.apache.catalina.startup.ContextConfig start 致命的: 前のエラーのためにこのアプリケーションは利用できないようにマークします 2007/10/04 14:45:07 org.apache.catalina.core.StandardContext start 致命的: Error getConfigured 2007/10/04 14:45:07 org.apache.catalina.core.StandardContext start 致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/Chap03] 2007/10/04 14:45:09 org.apache.catalina.core.ApplicationContext log 情報: org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]] 2007/10/04 14:45:10 org.apache.catalina.core.ApplicationContext log情報: Coyote HTTP/1.1を http-8080 で起動します 2007/10/04 14:45:13 org.apache.jk.common.ChannelSocket init 情報: JK: ajp13 listening on /0.0.0.0:8009 2007/10/04 14:45:13 org.apache.jk.server.JkMain start 情報: Jk running ID=0 time=0/292 config=null 2007/10/04 14:45:13 org.apache.catalina.storeconfig.StoreLoader load 情報: Find registry server-registry.xml at classpath resource 2007/10/04 14:45:14 org.apache.catalina.startup.Catalina start 情報: Server startup in 8267 ms その際、web.xmlの中身は <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app> <display-name>Chapter 3 Example</display-name> <servlet> <servlet-name>Chap03SampleServlet</servlet-name> <servlet-class>tmif.chap03.sample01.PersonalInfoCheckServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>Chap03SampleServlet</servlet-name> <ur1-pattern>/servlet/PersonalInfoCheck</ur1-pattern> </servlet-mapping> </web-app> です。 Tomcatのバージョンは5.5・JDKのバージョンは1.5でOSはVistaです。 このときのエラー箇所は</servlet-mapping>の中だと思うのですが 実際エラーとは思えないのですが、ここが原因なのでしょうか? よろしくおねがいします。
↧
↧
西暦→和暦
avaで、西暦→和暦に変換するプログラムを組みたいのですが、 例えば、 2008/11/22 と入力したら、 平成20年11月22日 と表示されるようなプログラムを作りたいのですが、 (昭和と平成のみ対応) 教えて下さい…m(__)m
↧
equalsの逆
javaで、文字列の場合は比較演算子の「==」は用いずに if ((str1.getText()).equals(str2)){ (※…str1,2は文字列) と書きますよね? この逆で、文字列str1とstr2は等しくないとき、にはif以下の条件文をどのように書けばよいでしょうか?
↧
JSPでImportエラーになります
技術サイトを見ながらJSPを勉強しているのですが、 自作のクラスがimportエラーとなる為、コンパイルできない状態です。 色々サイトを検索して調べてみましたが、原因が分からず悩んでいます。 ご教示を宜しくお願いします。 ※下記、[参考資料]ページを見ながら勉強していますが、 原因を調べる為にimportだけの簡単のjsp(test.jsp)を 作成してデバッグ中です。 Windows2000 Apache 2.0.63 Tomcat 6.0.16 JK2 2.0.4 参考資料:http://www.atmarkit.co.jp/fjava/rensai/jsp06/jsp06.html ----------------------------------------------------------------------------- ■エラー内容(ブラウザの表示結果) org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: An error occurred at line: 6 in the generated java file Only a type can be imported. atmarkit.CopyrightHTML resolves to a package ■ファイルの配置 $docbase →test.jspを配置 $docbase\WEB-INF\classes\atmarkit →CopyrightHTML.classを配置 $docbase\WEB-INF\lib ■test.jsp <%@ page contentType="text/html; charset=SHIFT_JIS" %> <%@ page import="atmarkit.CopyrightHTML" %> <html> <body> <p>-- テスト --</p> </body> </html> ■CopyrightHTML.java package atmarkit; /** * 著作権表示用のHTMLを生成するクラス */ public class CopyrightHTML { public String year = ""; public String name = ""; public String mail = ""; // 標準的な著作権表示HTML文を取得する public String getNormalHTML() { if(!mail.equals("")) { name = " <a href=\"mailto:" + mail + "\">" + name + "</a>"; } return "Copyright " + year + " " + name + ". All rights reserved."; } // 短い著作権表示HTML文を取得する public String getShortHTML() { if(!mail.equals("")) { name = " <a href=\"mailto:" + mail + "\">" + name + "</a>"; } return "(C) " + year + " " + name + "."; } }
↧
smaliファイル修正による、音楽再生について
お世話になります。 android開発に関わる質問をさせて頂きます。 現在、配布されているapkファイルをデコンパイルして生成されるsmaliファイルを一部修正し、 初期画面で音楽を再生しようと試みています。 ただ追加したsmaliのコードに不備があるらしく、初期画面が開かずに処理が終了してしまいます。 javaでやりたいことを書くと以下になります。 1.java mp = MediaPlayer.create(this, R.raw.topbgm); mp.start(); これをsmaliで以下のように記述しています。 2.smili const-string v6, "R.raw.topbgm" invoke-static {p0, v6}, Landroid/media/MediaPlayer;->create(Landroid/content/Context;I)Landroid/media/MediaPlayer; move-result-object v6 iput-object v6, p0, Lmn/sorako/slotgame/Result;->mp:Landroid/media/MediaPlayer; .line 124 iget-object v6, p0, Lmn/sorako/slotgame/Result;->mp:Landroid/media/MediaPlayer; invoke-virtual {v6}, Landroid/media/MediaPlayer;->start()V R.raw.topbgmをstringで定義しているのが問題ではないかと睨んでいるのですが、 実際どのように書き換えれば良いか分からず、困っております。 何か思い当たる節がございましたら、ご指摘頂けると幸いです。 また不足している情報があれば、分かる範囲で補足致します。 何卒、宜しくお願い申し上げます。
↧
↧
テキストデータの他アプリへの受け渡し方法について
JAVAで動画のようなスクリーンキーボードを作成したいと考えております。 JAVAのSwingで作ったGUIプログラムのボタンを押すと下のテキストエディタなどに文字が入力されるといったものを作りたいのですが他のアプリケーションへのテキストデータの受け渡し方法を探しております。 EnterやSpace、Backspaceなどのキーの指示はおそらくRobotクラスを使えば実現できると思うのですが、キーの指示ではなく例えば「あ」といった1文字のデータを受け渡す方法がわかりません。 システムのクリップボードを介して受け渡そうとも考えたのですが、これだとクリップボードのデータを書き換えてしまい元のクリップボードが消えてしまうという不都合が生じてしまいます。 クリップボードを使わずに1文字のテキストデータを他のアプリケーションに受け渡すもっと良い方法やクラスがありましたらお教え願えないでしょうか。よろしくお願いします。
↧
warファイル 「種類:WAR ファイル」の解凍方法
warファイルの解凍方法をどなたかご存知の方いらっしゃいませんでしょうか? デスクトップのフォルダの中を開いた時にSYORUI.WARと書かれたファイルがあり、フォルダ内のサイズの横の種類欄に「WAR ファイル」とかかれてあります。 いろいろネットで調べたのですが他ツールプログラミングでの入力で解凍できるようなのですが何か直接、解凍できるソフトをご存知の方 教えていただけませんでしょうか?
↧
JAVA ArrayListからArrayListへのコピー
java で、ArrayListからArrayListへコピーはできるのでしょうか? clone()というメソッドがありましたが、よくわからず、コピーできてないようなので伺いました。 ベーシックではできるようですが、JAVAでもできるのでしょうか? どなたか教えていただけませんでしょうか?
↧
JavaでXORによる暗号化
JavaでXORによる暗号化について調べていたら下記URLのサイトを見つけました。 http://www.eeb.co.jp/2007/07/_10_1.html そこでサンプルにあった下記プログラムをvalue と key を変えて実行してみたところ value の中の「は」、「で」がうまく復元されず文字化けしてしまいました。 どこが悪いのかよくわからないのですがお分かりになられる方がいらっしゃいましたら 教えていただけますでしょうか。 public class XorTest { //================================================== // メイン //================================================== public static void main(String[] args) { String value = "abcd本日はお日柄もよろしいようで"; String key = "1"; // 暗号化前出力 print("暗号化前", value); // 暗号化 byte[] byteEncodeArray = encode(value.getBytes(), key); value = new String(byteEncodeArray); // 暗号化後出力 print("暗号化後", value); // 復元 byte[] byteDecodeArray = decode(value.getBytes(), key); value = new String(byteDecodeArray); // 復元後出力 print("復元後", value); } //================================================== // 暗号化 //================================================== private static byte[] encode(byte[] src, String key) { byte[] byteKeyArray = new byte[0]; byte[] byteEncArray = new byte[src.length]; // キーの文字列を変換する文字列をカバーするまで繰り返す while(byteKeyArray.length < src.length) { byteKeyArray = (new String(byteKeyArray) + key).getBytes(); } // 変換 for (int i = 0; i < src.length; i++) { byteEncArray[i] = (byte)(src[i]^byteKeyArray[i]); } return byteEncArray; } //================================================== // 復元 //================================================== private static byte[] decode(byte[] src, String key) { return encode(src, key); } //================================================== // ダンプ文字列取得 //================================================== private static String getDump16(byte[] value) { StringBuffer buf = new StringBuffer(); for (int i = 0; i < value.length; i++) { String hex = Integer.toHexString((int)value[i] & 255); // 4桁に揃える hex = "0000" + hex; hex = hex.substring(hex.length() - 4, hex.length()); // バッファに追加(空白区切り、10桁ずつ改行) buf.append(hex + (i % 10 == 9?System.getProperty("line.separator"):" ")); } return buf.toString().trim(); } private static void print(String title, String value) { System.out.println("【 " + title + " 】"); System.out.println("-----------------------------"); System.out.println(value); System.out.println(getDump16(value.getBytes())); System.out.println(); System.out.println(); } }
↧
↧
シンボルが見つかりませんというエラーが理解できません。
以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.io.File; public class janken extends Applet implements Runnable, ActionListener { private static final int EXTERNAL_BUFFER_SIZE = 128000; Image image[] = new Image[3]; Thread t; int index1 = 0; int index2 = 0; String msg = ""; String msg1 = ""; boolean state = false; Button b1 = new Button("ぐー"); Button b2 = new Button("ちょき"); Button b3 = new Button("ぱー"); public void init(){ for(int i = 0; i<=2; i++){ img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG"); } add(b1); add(b2); add(b3); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); msg1 = "結果は・・"; } public void paint(Graphics g){ g.drawImage(img[index1],350,30,this); g.drawImage(img[index2],695,30,this); g.drawString("コンピューター",420,300); g.drawString("あなた",800,300); g.drawString(msg,630,320); g.drawString(msg1,550,320); } public void start(){ state = true; t = new Thread(this); t.start(); } public void run(){ while(state){ index1++; if(index1 == 3){ index1 = 0; } index2++; if(index2 == 3){ index2 = 0; } repaint(); try { Thread.sleep(60); }catch(InterruptedException e) { } } } public void actionPerformed(ActionEvent e){ if(state == false) { start(); return; } state = false; if(e.getSource() == b1) { msg = "ぐー"; index2 = 0; } else if(e.getSource() == b2){ msg = "ちょき"; index2 = 1; } else if(e.getSource() == b3){ msg = "ぱー"; index2 = 2; } check(); repaint(); } public void check() { if(index1 == index2) msg ="あいこ"; else if (index1 == 0) { if(index2 == 2) msg="あなたの勝ち"; else msg ="あなたの負け"; } else if(index1 == 1) { if(index2 == 0) msg="あなたの勝ち"; else msg="あなたの負け"; } else if(index1 == 2) { if(index2 == 1) msg="あなたの勝ち"; else msg="あなたの負け"; } } }
↧
java plug-in警告
先ほど「java」というワードの入ったアプリケーションをアンインストールして、javaのサイトで新しくインストールしたのですが、javaがうまく動作しません。 例えばYahoo!のゲームを開こうとすると、 『java plug-in警告 このHTMLページのアプレットでは、現在ブラウザで使用されているものとは異なるバージョンのjavaが必要です。アプレットをこのHTMLページで実行するには、新しいブラウザセッションが必要です。Netscapeブラウザセッションをすべて閉じ、新しいブラウザセッションでHTMLページを実行してください。』 と表示され、「はい」を選択するとウインドウには 「JAVA Plug-inがJRE衝突を検出しました。」と表示され、新しいウインドウが出ます。 新しいウインドウにはゲームの部屋が表示されるのですが、 「ユーザーIDの認証に失敗したためYahoo!ゲームにログインできません。」と表示されゲームをすることはできません。 javaを使ったチャットでも入室などは出来るものの、同じような(警告が出て、「はい」を選択すると新しいウインドウが出る)現象が起きます。 これはどうすれば改善できるでしょうか? OSはWindowsXPで、アンインストールしたものの名称は忘れてしまったのですが、「java」というワードの入ったものを2つアンインストールしました。 Java Plug-inの問題なのかなとは思うのですがどうすればいいのかわかりません。 何かアドバイスお願いします。
↧
JFreeChartのXY軸の設定に関する質問
JFreeChartのXY軸の設定がうまく行かなくて困っています。。以下のサイトを参考にすることで、バブルチャートを作成することが出来ました。 http://www.javadrive.jp/jfreechart/bubblechart/index5.html バブルチャートを用いて、左上から水平方向にX軸を、左上から垂直方向にY軸を設定したいと考えております。 具体的には以下の図のようなものになります。 色々ネットで調べて見たところ、軸を入れ替えることはできる模様ですが、軸の向きやそれ以外の位置に変える 方法はよくわかりません。 Javaに関して知識のあるかた、是非ともお力を貸してください!
↧