投稿

ラベル(java)が付いた投稿を表示しています

[Java]相対指定したファイル名からそのファイルのあるディレクトリの絶対パスを取り出したい。

標準のメソッドではできないのか。。File#getParent()はnullになる。 環境 iotest.java import java.io.*; public class iotest { public static void main(String... args){ File f = new File(args[0]); try { System.out.println( args[0]+" exists: "+f.exists()); System.out.println("getPath(): "+f.getPath()); System.out.println("AbsolutePath(): "+f.getAbsolutePath()); System.out.println("CanonicalPath(): "+f.getCanonicalPath()); System.out.println("parent(): "+ f.getParent()); }catch (IOException e){} } } コンパイル D:\iote>javac iotest.java iotest.classはD:\ioteに存在するファイル dam.txtはD:\ioteに存在しないファイル 実行1 D:\iote>java iotest iotest.class 結果1 iotest.class exists: true getPath(): iotest.class AbsolutePath(): D:\iote\iotest.class CanonicalPath(): D:\iote\iotest.class parent(): null 実行2 D:\iote>java iotest D:\iote\iotest.class 結果2 D:\iote\iotest.class exists: true getPath(): D:\iote\iotest.class AbsolutePath(): D:\iote\iotest.class Canonica...

SQLを書くときのJava開発者がやりがちな10個の失敗について

 10 Common Mistakes Java Developers Make when Writing SQL http://blog.jooq.org/2013/07/30/10-common-mistakes-java-developers-make-when-writing-sql/

GAE Java SDK 1.7.7にしたらJSPコンパイルエラー

イメージ
・・・いろいろはまってたがGAEやJavaのバージョンが原因でなくて 単にInstalled JREsがあくまでJREであってJDKのパスではなくなっていたことが原因。 環境 Windows8 Pro(64bit) JDK1.7.0_21 (64bit) Eclipse Juno SR2(64bit) Google App Engine Java SDK 1.7.7.1 症状 JDKのメジャーバージョンアップ後、プロジェクトのJSPファイルに×マークがつく コンパイルするとJSPのコンパイルが出来ない旨のエラーメッセージが出力される。 診断 Window->Preferences->Java->Installed JREs 設定済みのJREをEditボタンで開いてJRE_HOMEがJREかJDKどちらのパスになっているか 確認する。 例: ・JDKの場合 C:\Program Files\Java\jdk1.7.0_21 ・JREの場合 C:\Program Files\Java\jre7 対処 JRE_HOMEのパスをJDKのパスに設定しなおせばJSPファイルがエラー扱いされることはなくなるはず。

[java]Subject.txtスレ一覧からスレッドIDとタイトルとレス数を取り出す

package test; import java.io.*; import java.net.*; import java.util.*; public class Run { public static void main(String[] args) { List<String> entries = new ArrayList<String>(); URL url; BufferedReader reader; try { url = new URL("http://jbbs.livedoor.jp/otaku/12973/subject.txt"); reader = new BufferedReader(new InputStreamReader(url.openStream(),"EUC-JP")); String line; while ((line = reader.readLine()) != null) { entries.add(line); } reader.close(); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace();     } for (String str:entries){ Integer id=Integer.parseInt(str.substring(0,10)); int resnum_start=str.lastIndexOf('('); int resnum_end=str.lastIndexOf(')'); Integer num = Integer.parseInt(str.substring(resnum_start+1,resnum_end)); String title=str.substring(0,resnum_start).split(",")[1]; System.out.print...

App Engine for Java: Multitenancy and Namespace API 感想

データリークを防ぐ機能はフレームワーク任せかなあ キーとクエリーに直接名前空間をセットできないのは苦労しそう。インターフェイスが仕様大幅に変わるから? キーとクエリーの使用に名前空間指定を強制させる設定とか出来ないかしら。

Google Appengine for Java: Remote API for Java

RemoteAPIを使うと、Eclipseはあるに越したことはないけど コマンドベースでもGAEを結構使えてしまう。 Remote API for Java - Google App Engine http://code.google.com/intl/en/appengine/docs/java/tools/remoteapi.html 英語版をみること。 web.xmlに以下の設定を追加。 <servlet> <display-name>Remote API Servlet</display-name> <servlet-name>RemoteApiServlet</servlet-name> <servlet-class>com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>RemoteApiServlet</servlet-name> <url-pattern>/remote_api</url-pattern> </servlet-mapping> 通常どおりDeployする。設定としては基本的にこれでOK。 以下のようにプログラムを書く(そのままコピーだけど) package remoteapiexample; import com.google.appengine.api.datastore.DatastoreService; import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; import com.google.appengine.tools.remoteapi.RemoteApiInstaller; import com.google.ap...

Google Appengine for Java: Transactionを開始するには DatastoreService.beginTransaction() をつかう。

DatastoreService dss = DatastoreServiceFactory.getDatastoreService(); Transaction txn = dss.beginTransaction(); /// .... txn.commit();

Google Appengine for Java: tracsactionは1つのエンティティグループ内のみ。

Problem accessing /blobstore.jsp. Reason: can't operate on multiple entity groups in a single transaction. found both Element { type: "txnHead" id: 0x130a7388166 } and Element { type: "txnBody" id: 0x130a7388166 } Caused by: java.lang.IllegalArgumentException: can't operate on multiple entity groups in a single transaction. found both Element { type: "txnHead" id: 0x130a7388166 } and Element { type: "txnBody" id: 0x130a7388166 }

google appengine for javaのjavadoc

javadoc - Google App Engine for Java 日本語情報は古いというか足りないのがおおい。 Entityクラスのコンストラクタ概要を比べても。。。 http://code.google.com/intl/ja/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Entity.html Entity(java.lang.String kind) 指定された種類で、親 Entity を持たない Entity を新しく作成します。 Entity(java.lang.String kind, Key parent) 指定された種類で、親 Entity を持つ Entity を新しく作成します。 Entity(java.lang.String kind, java.lang.String keyName) 指定された種類とキー名で、親 Entity を持たない Entity を新しく作成します。 Entity(java.lang.String kind, java.lang.String keyName, Key parent) 指定された種類とキー名で、親 Entity を持つ Entity を新しく作成します。 http://code.google.com/intl/en/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Entity.html Entity(Key key) Create a new Entity uniquely identified by the provided Key. Entity(java.lang.String kind) Create a new Entity with the specified kind and no parent Entity. Entity(java.lang.String kind, Key parent) Create a new Entity with the specified kind and parent Entity. Entity(java.lang.String kind, long id) Create a new En...

だいたいいつもんこんだけimport

import com.google.appengine.api.datastore.DatastoreService; import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.KeyFactory; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.Query; import com.google.appengine.api.datastore.Transaction; めんどくさいのでimport com.google.appengine.api.datastore.*にするか

GoogleAppEngine制限

Blobstoreは課金モードでないと使えないっぽい

Ubuntu11.04/OpenJDK1.6

JAVA_HOME=/usr/lib/jvm/java-6-openjdkでいいのかな。 $ dpkg -L openjdk-6-jdk /. /usr /usr/lib /usr/lib/jvm /usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-openjdk/include /usr/lib/jvm/java-6-openjdk/include/jni.h /usr/lib/jvm/java-6-openjdk/include/linux /usr/lib/jvm/java-6-openjdk/include/linux/jni_md.h /usr/lib/jvm/java-6-openjdk/include/linux/jawt_md.h /usr/lib/jvm/java-6-openjdk/include/jvmti.h /usr/lib/jvm/java-6-openjdk/include/jvmticmlr.h /usr/lib/jvm/java-6-openjdk/include/classfile_constants.h /usr/lib/jvm/java-6-openjdk/include/jawt.h /usr/lib/jvm/java-6-openjdk/include/jdwpTransport.h /usr/lib/jvm/java-6-openjdk/lib /usr/lib/jvm/java-6-openjdk/lib/jconsole.jar /usr/lib/jvm/java-6-openjdk/lib/sa-jdi.jar /usr/lib/jvm/java-6-openjdk/lib/tools.jar /usr/lib/jvm/java-6-openjdk/lib/ct.sym /usr/lib/jvm/java-6-openjdk/lib/orb.idl /usr/lib/jvm/java-6-openjdk/lib/ir.idl /usr/lib/jvm/java-6-openjdk/lib/dt.jar /usr/lib/jvm/java-6-openjdk/bin /usr/lib/jvm/java-6-openjdk/bin/appletviewer /usr/...

[Java]:したらばのsubject.txtからレス番号を取る

import java.util.*; public class Main { /** * @param args */ public static void main(String[] args) { String urls= "http://jbbs.livedoor.jp/otaku/14429/subject.txt"; List<String> lb = new Walker().getURL(urls, "EUC-JP" ); Map<Integer,JBBSModel> mps= new HashMap<Integer,JBBSModel>(); for (String bbsthread:lb){ JBBSModel jm = new JBBSModel(bbsthread); mps.put(jm.getId(), jm); } for(Map.Entry<Integer,JBBSModel> mpet:mps.entrySet()){ System.out.println(mpet.getValue().getId()+":"+mpet.getValue().getResnum()+":"+mpet.getValue().getTitle()); } } } Walkerは自作クラス(前のエントリ参考) JUGEMテーマ: インターネット プロパティを入れるためのクラス class JBBSModel { int resnum; int id; String title; public String getTitle(){return title;} public int getId(){return this.id;} public int getResnum(){return resnum;} public JBBSModel(String entryOfSubjectTxt){ this.title = trimResnum(entryOfSubjectTxt...

appengine-ja:GAE for Javaでしたらばのスレッド一覧ファイルsubject.txtを読み込む

取得するクラス import java.util.*; import java.io.*; import java.net.*; /* Sample * List<String> lb = new URLWalker().getURL("http://example.com/page","EUC-JP","UTF-8"); * */ public class URLWalker { List<String> ustrb = new ArrayList<String>(); String src_encoding="ISO_8859_1"; String out_encoding="utf-8"; public List<String> getURL(String urlstr){ return getURL(urlstr,src_encoding,out_encoding); } public List<String> getURL(String urlstr,String src_encoding){ return getURL(urlstr,src_encoding,out_encoding); } public List<String> getURL(String urlstr, String src_encoding,String out_encoding){ try { URL url = new URL(urlstr); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(),src_encoding)); String line; while ((line = reader.readLine()) != null) { //ustrb.add(new String(line.getBytes(out_encoding)));// *これだとダメだった ustrb.add(line);//普通にaddす...

[Java]Propertiesファイルから情報を取得する

イメージ
空でも何らかの文字列を返す想定で。 意外とorg.apache.commons.lang3.ObjectUtils#equalsを使ってみたかっただけ。 import java.util.*; import java.io.*; import java.text.*; import java.net.*; import org.apache.commons.lang3.*; public class Main { public static void main(String... args){ String key =""; Config cfg = new Config("dbconf.conf"); if (args.length>=1){ for (String arg:args){ key=arg; System.out.println("Key="+key+","+"Value="+cfg.getValue(key)); } } } } class Config { Properties config = new Properties(); InputStream is; File file; public Config(String filename){ file = new File(filename); try { if (!file.exists()){ is = new FileInputStream(new File(".properties")); config.load(is); }else { is = new FileInputStream(file); config.load(is); } is.close(); } catch (IOException e){e.printStackTrace();} } public Properties getProperties(){ return config; ...

[JSP]サーブレットコンテキストから、context名を取得

イメージ
getServletContext()でServletContextオブジェクトを取得。 getServletContextName()でそのコンテキストの名を取得する String contextPath = getServletContext().getServletContextName(); 紫本SJC-WC J2EE1.5用 SUN教科書 Webコンポーネントディベロッパ(SJC-WC) 試験番号:310-083   (JUGEMレビュー ») 山本 道子

[JSP]同じディレクトリにあるファイルをリストする。

イメージ
jspと同じディレクトリのファイルを出力する をもう少し簡単に。 index.jsp <%@ page import="java.util.*,java.io.*,java.net.*,java.util.regex.*" %> <%@ page contentType="text/html;charset=UTF-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <% pageContext.setAttribute("pagename","listing my files"); %> <html> <head> <title>${pagename}</title> </head> <body> <h1 style="background:white;">${pagename}</h1> <% String docsBase=application.getRealPath(request.getServletPath())+"/.."; %> <% File docDir = new File(docsBase); List<String> fnlist = new ArrayList<String>(); List<String> dirlist = new ArrayList<String>(); for (File file : docDir.listFiles()) { if (Pattern.matches(".*¥¥.(txt|html|htm)$", file.getName().toLowerCase())) fnlist.add(file.getName()); if(file.isDi...

Google App Engine for Java勉強

イメージ
最近Google App Engineいじってるときに充実している気がする。 Servlet/JSP 覚えてよかった。(Webコンポーネントデベロッパの範囲ね) JSPのなかのscriptletをちゃんと文法チェックしてくれるプラグインないかしら。 紫本SJC-WC J2EE1.5用 SUN教科書 Webコンポーネントディベロッパ(SJC-WC) 試験番号:310-083   (JUGEMレビュー ») 山本 道子

どちらを買うか両方買うか。。

JUGEMテーマ: コンピュータ

SLIM3本購入

帰りの電車で携帯である記事を読んで発作的に渋谷で降りて 正月時間をとる。 JUGEMテーマ: コンピュータ JUGEMテーマ: インターネット