gcj (gcj (GCC) 4.3.0 20061204 (experimental)) を使って、
ネイティブコンパイルした際に、「自分自身のパスを取得する方法」が知りたいです。
コンパイル時ではなく、コード上で。です。
Windows API で言えば GetModuleFileName関数 のような処理がしたいのです。
「Java ファイルパス 取得」と検索しても相当マシなもので、
「カレントディレクトリを取得する」、
それか「サンプルコードすらコンパイルが通らない」です。
コンパイルが通らない方はもしかしたら「gcjでは省かれている機能」なんだと思いますが...
[情報]
gcj: gcj (GCC) 4.3.0 20061204 (experimental)
[追記1]
あ、マジで忘れていました...
後出しですみませんが、(質問する前に)
nio っていうのを使っているサンプルコードを試してみましたが、
「java.nio.Filesというのは無い」とコンパイルエラーになっていたのを書き忘れていました...
(すみません...)
[追記2]
帰宅後、Y.H.さんが回答されたものを試してみました。
gcj --main=Foo -s -o %PROGRAM_NAME%.eXe Foo.java -Dfile.encoding=SJIS
とネイティブコンパイルしてみました。
すると、質問に載せる予定だった(書き忘れていた...)エラーが再度出ます。
[メッセージ]
Foo.java: In class 'Foo': Foo.java: In method 'Foo.main(java.lang.String[])': Foo.java:5: error: Undefined variable or class name: 'java.nio.file.Paths'. String path = java.nio.file.Paths.get((Foo.class).getProtectionDomain().getCodeSource().getLocation().toURI()).toString(); ^ 1 error
試しに ネイティブコンパイルじゃない方 ( classファイルにする方 )で試してみました。
gcj -C Foo.java
それでも同様のエラーになります。
試しに import 文を追加して試してみました。
Java
1import java.nio.file.Path;
と追加すると、
Foo.java:2: error: Class or interface 'java.nio.file.Path' not found in import. import java.nio.file.Path; ^ Foo.java:7: error: Type 'Path' not found in the declaration of the local variable 'path'. Path path = java.nio.file.Paths.get(Foo.class); ^ 2 errors
と「そもそもjava.nio.file.Pathっていうのがない」ようなのです...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/21 07:19