忍者ブログ
よくわからないことを調べて解説してみるブログ。

2025

0131
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2013

0215
①SVNにフォルダ追加
②一枚岩プロジェクトに変更。
③Trunkをチェックアウト
④コマンドプロンプトで、mvn archetype:generateを実行。
 並びに出るarchetypeは番号を入力せずに、EnterするとQuickStartになる。
eclipseで「チーム」→「MAVENプロジェクトへ変更。」→pom.xmlが作成される。
⑦ビルドパスの構成より「フォルダーの追加」で以下を追加する。
 src/main/java
  src/test/java
必要に応じて、
src/main/resources
src/test/resources
を追加する。

拍手[0回]

PR

2013

0114

■Windows APIより時刻取得について
いろいろ調べてみたが、現状の環境における分解能は1ミリ秒以下としか思えない。

ここ数年の情報がなく、Windows7、8の情報もない。

getLocalTimeの返却値は、ミリ秒単位で変化している。

分解能が15ミリであれば、15ミリ単位で変化すべきだが、それは確認できなかった。
私の環境下では、1ミリ秒単位で変化していた。

Windows APIの実装がどうなっているか分からない。調べ方が悪いのかもしれないし、ここから先はMicoSoftの有償サポートかもしれない。

■正確性の向上について
現在は、水晶振動子を用いたRTCはWindowsでは使われていなそうだ。NTPサーバを用いた時刻の定期更新がデフォルトで設定してあった(いわゆるデスクトップ画面の右下の時計から見れるサーバ)。
これはデフォルトでは、windowsが提供しているサーバである。しかもこれが調子悪そう。というかpingが届かない。
それに米国サーバのため、とても遠い。戻ってくる頃には数百ミリ秒はずれているだろう。

これを日本のNTP(http://www2.nict.go.jp/aeri/sts/tsp/PubNtp/index.html)に変える。ほかにもいろいろある。
すると、ping値は数十ミリ秒に抑えられる。

拍手[0回]

2012

1231
JVM.dllがクラッシュしまくった。
原因は実装コードが原因。

きっちりメソッドシグネチャとパラメータの型を合わせることでケアレスミスは解決する。

Double型 は、jobject

以下を例に注意点を。
これは、void PrintWriter#print(Double msg)というメッセージ出力メソッドを呼び出す流れ。
// クラス特定
jclass printWriter = env->FindClass("Lprottype/print/sample/PrintWriter;"); // クラス探索の際は必ず「;」を忘れずにこれだけでjvmはこける。
// メソッド特定
jmethodID printD = env->GetStaticMethodID(printWriter,"print","(Ljava/lang/Double;)V"); // シグネチャの1パラメータごとに「;」をいれた方が無難。
// データ型取得。
jclass jDouble = env->FindClass("Ljava/lang/Double;"); // クラス探索
// コンストラクタ取得。
jmethodID jDoubleIns = env->GetMethodID(jDouble,"<init>","(D)V"); // プリミティブ型のdoubleはD、参照型のDoubleは、Ljava/lang/Double。オートボクシングは行われないので、必ず引数の型に合わせること。
jdouble value = 1.2424;
// Double生成。
jobject valueObj = env->NewObject(jDouble,jDoubleIns,value);
// メソッド呼び出し。
env->CallStaticVoidMethod(printWriter,printD,valueObj);

という感じです。

参照型はstringを除きjobjectで渡す。プリミティブ型を引数に取るものは、対応するj~の型を使う。

あとは、JNIのドキュメント見ればいける。
 

拍手[0回]

2012

1224
DLLをC++で作るとき、リンクの際にどうしてもJNI_GetDefaultJavaVMInitArgs、JNI_CreateJavaVMなどの
定義が読み込めなかった。
libファイルはしっかり参照できるようにしているにも関わらず。

どうやらこれらのJVM関数はエクスポートしないとうまく参照できないらしい。

EXPORTS

JNI_CreateJavaVM
JNI_GetDefaultJavaVMInitArgs

拍手[0回]

2012

1224
C:\Program Files\Java\jdk1.7.0_10\include
こういったJavaインストールフォルダにjni.hがある。


表示→その他の表示→プロパティマネージャー→
リリース種別ごとのプロパティより、VCC++インクルードディレクトリに上記を追加する。

すると、jniを参照できるようになる。

拍手[0回]

<< 前のページ 次のページ忍者ブログ [PR] * Template by TMP >>
プロフィール
HN:
たんてーくん
性別:
非公開
フリーエリア
最新CM
[09/25 http://2017.bblbuy.com]
[09/24 http://www.japanform.com]
[09/23 http://www.japanform.com]
[09/22 http://www.japanform.com]
[09/21 http://2017.bblbuy.com]
ブログ内検索
忍者ブログ [PR]
* Template by TMP