[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/09 02:06 / Filesize : 270 KB / Number-of Response : 1020
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

☆★Java質問・相談スレッド182★★



1 名前:デフォルトの名無しさん [2018/11/19(月) 11:37:06.10 ID:C68x9bSia.net]

プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。

前スレ
★★Java質問・相談スレッド181★★
https://mevius.5ch.net/test/read.cgi/tech/1518252580/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured

237 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 23:18:37.51 ID:Bzn5o3i30.net]
>>233
配列の長さを調べる。

238 名前:デフォルトの名無しさん [2019/04/20(土) 00:35:16.58 ID:CMR5Akfm0.net]
>>232
ArrayListのaddはリストの最後に値を追加するから
値を追加した順番にインデックスがつけられることは保証されるよ

239 名前:デフォルトの名無しさん [2019/04/20(土) 06:05:00.74 ID:FdhFaaGT0.net]
>>235
ありがとうございます。

240 名前:デフォルトの名無しさん [2019/04/20(土) 20:06:24.28 ID:JruJqlnL0.net]

jar実行時のカレントディレクトリが環境によってまちまちだって聞いたんだけど本当?


コマンドラインでディレクトリAに居ながらjavaコマンドでディレクトリBのjarを起動したら
そのjarの中でカレントディレクトリはAとBどちらになる?

241 名前:デフォルトの名無しさん [2019/04/20(土) 20:36:06.72 ID:JruJqlnL0.net]
2を自分で実験してみたんですが
コマンドラインのカレントディレクトリがjar内部でもカレントディレクトリですね。
つまり./folderを作成したら、コマンドラインの位置に出現する。

242 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 22:30:51.50 ID:ZG2GZstI0.net]
new File(".").getCanonivalPath()
あってるかどうかは知らん

243 名前:233 mailto:sage [2019/04/20(土) 22:53:08.89 ID:8ST0JapT0.net]
>>234
返信が遅くなりすいません。
ありがとうございました。

244 名前:デフォルトの名無しさん [2019/04/21(日) 15:13:37.03 ID:oGsU9OH20.net]
>>239
シンボリックリンクを手繰っても良い場合はそれでも良くて、ダメな場合は Paths.get(relativePath).toRealPath(LinkOption.NOFOLLOW_LINKS) のようだ。
https://qiita.com/nwtgck/items/5dd7a3008a5a31bf964e

245 名前:238 [2019/04/25(木) 08:51:23.69 ID:ximnnd2X0.net]
これやばくないですか?
プロジェクトのトップからの相対パスで色々なファイルを指定する事は珍しくないはずです。
そうして作られたjarをコマンドライン等から呼び出すとき
カレントディレクトリが狂わないように調整する必要がある。
相対パスのFileオブジェクトの参照先はカレントディレクトリ依存ですよね?
しかもカレントディレクトリがどうなるかは環境依存ですよね?

と思ったらjavaコマンドの引数で-Duser.dirを指定すればいいようです。
でも、デスクトップアプリだと、環境別に起動スクリプト書かなきゃまずいですね。
エンドユーザーは-Duserr.dirを指定しません。
どこから呼び出しても良いようにしたい、エンドユーザーの利便性のためなのに、
起動スクリプトを使うのは本末転倒な気がします。
と言ってもコマンドラインから呼び出す場合しか実際問題にならないだろうけど。

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4045688
user.dirは起動後だと修正不可能。



246 名前:デフォルトの名無しさん mailto:age [2019/04/25(木) 09:45:05.55 ID:sal5bxLGM.net]
>>242
カレントディレクトリに依存しないように
プログラム組めばよいし
カレントディレクトリに依存するなら
シェルスクリプトやバッチファイルで
カレントディレクトリを指定するのがセロリーですよ

247 名前:デフォルトの名無しさん mailto:age [2019/04/25(木) 09:46:41.65 ID:sal5bxLGM.net]
プロジェクトのトップからの相対パスになるんだなんて
思い込みがなければ問題ナッシング

248 名前:デフォルトの名無しさん [2019/04/25(木) 09:57:47.94 ID:ximnnd2X0.net]
カレントディレクトリに依存してはいけないというなら、
相対パスを使えないという事になるのでは?
しかし絶対パスはたびたびOSのユーザー名など個人情報が入ります。
できれば扱いたくない。

249 名前:デフォルトの名無しさん [2019/04/25(木) 10:11:29.05 ID:ximnnd2X0.net]
d.hatena.ne.jp/yomama/touch/20080718/1216394398
やはりいい方法が無いと。

それどころか、リソースファイルを取得する時URLクラスで相対パスを使うのが
ベストプラクティスとして紹介されている事がある。
それはカレントディレクトリに依存するのか?クラスパス依存だから問題ない?
そもそも、クラスパスが相対パスだったらカレントディレクトリ依存で解決されるだろう。

どうやって相対パスを使わずに組むんだ?

250 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 10:44:52.10 ID:w8/bGs7/0.net]
エクスプローラーから直接実行ファイルをダブルクリックしたら、そこがカレントディレクトリじゃないの?
ショートカットを作成して、それをデスクトップとか他のフォルダに置いた場合、
そのショートカットのプロパティをみると、「作業フォルダー」ってのがあって、それがカレントディレクトリではないかと。

251 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 11:24:18.30 ID:DeQsB6RVM.net]
>>246
どんな実行方法でもjarがある場所をベースにしたいってことならjarファイルのパスを取得してそこから相対パスで扱えばよいよ

252 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 13:37:42.97 ID:wpotMNKo0.net]
各種リソースは、プロジェクトフォルダからの相対パスだろ

PROJECT_PATH などの定数・変数を作って、そこからの相対パスを定義すればよい

253 名前:デフォルトの名無しさん mailto:age [2019/04/25(木) 17:48:56.39 ID:PdDg4Yo8M.net]
>>245
パスを引数で渡したり
カレントディレクトリに依存するなら起動するときに
指定するのがセロリーだよ

254 名前:デフォルトの名無しさん mailto:age [2019/04/25(木) 17:53:11.84 ID:PdDg4Yo8M.net]
>>246
リソースファイルは普通クラスパスから読み込むよ
シェルスクリプトやバッチファイルで
起動時にリソースを配置したディレクトリを
クラスパスに指定するのがセロリーですよ

255 名前:デフォルトの名無しさん mailto:age [2019/04/25(木) 17:58:48.54 ID:PdDg4Yo8M.net]
例えば実行時にworkフォルダに相対パスでファイルを吐き出したいときは
シェルスクリプトで
cd work
のコマンドを実行してから
javaを実行するよ



256 名前:デフォルトの名無しさん mailto:age [2019/04/25(木) 18:14:02.08 ID:PdDg4Yo8M.net]
スクリプトからjarを実行すれば
プロキシを指定したり使用メモリの上限を指定したり
ログの出力を変えたりできるよ
エンドユーザーの利便性を考えるなら起動スクリプトを
作るべきだと思うよ
jarは直接実行するものじゃない

257 名前:デフォルトの名無しさん mailto:age [2019/04/25(木) 18:22:50.99 ID:PdDg4Yo8M.net]
>>249
プロジェクトフォルダってソースコードを管理する
ものだから実行時にその存在を前提にするのは設計としておかしいと思う
開発環境からしか実行しないなら問題ないけど
今回のようにjarを配布して実行してもらうならマズいですよ

258 名前:デフォルトの名無しさん mailto:age [2019/04/25(木) 18:57:50.14 ID:PdDg4Yo8M.net]
>>237
の質問はよくわかる、なぜなら俺もむかしそう思ってたから
実行時にはjarの内部にいるんだと思いがちだけど
jarにはクラスファイルが入ってて
それを外から実行してるだけなんよ

259 名前:デフォルトの名無しさん [2019/04/25(木) 22:38:36.18 ID:O+x6W6lz0.net]
>>249
すげぇな、お前。

260 名前:デフォルトの名無しさん [2019/04/25(木) 23:09:48.66 ID:ximnnd2X0.net]
aarkiton.blogspot.com/2011/09/getresourceasstream.html
>実行時にクラスがjarファイルなどに格納されている場合、実行環境によりなぜかgetResourceAsStream()でリソースが読み込めない場合があるようだ。

こういう記事があるから、リソースの読み込みをクロスプラットフォームにするには、
URLでアクセスするのが良いとされている。
ところがURLアクセスの方法は相対パスを使用している。

クロスプラットフォームかつどのフォルダからも実行できるようにする方法はない。
あるとすれば、環境別に起動スクリプトを書く場合だけ。
起動引数無しで起動されたら即終了するようにして、
必ずスクリプトから起動させるしかない。

でも、それって、JVMが動いてても起動スクリプトが無いと動かないから、
マイナー環境向けにスクリプト書かれないだろうから、
クロスプラットフォーム感激減だ

261 名前:デフォルトの名無しさん [2019/04/25(木) 23:11:54.85 ID:ximnnd2X0.net]
なんていうか、プログラムってしんどいね
環境ごとの無意味な違い(ファイルパスの区切り文字とか)で振り回されるし

262 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:35:13.14 ID:7lYh8BWfM.net]
つーかその張ってるリンク先で言ってる話はまた別の話だと思う
読み込むpropertiesファイルもまとめてjarにいれた場合に読めないって話でしょ

結局やりたいことの為に何が必要なのか考えてみた方がよいと思う

263 名前:デフォルトの名無しさん [2019/04/26(金) 00:23:14.47 ID:Q79mrf5i0.net]
プログラム上の問題というより環境的な問題だから
自分じゃどうしようもない
これはプログラムが悪いんじゃなく、ソフトウェアエコシステムの問題だ
すんなりとクロスプラットフォームになって
カレントディレクトリとか余計な問題に悩まなくていい開発方法があればいいのに

264 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 01:15:44.98 ID:if9lRvGxM.net]
カレントディレクトリを前提にパスを扱うからいけないだけ
jarファイルの場所を起点として相対パスを使えばいいだけだよ

265 名前:デフォルトの名無しさん [2019/04/26(金) 02:14:57.44 ID:Q79mrf5i0.net]
それは絶対パスを使う事になるから、できれば避けたい
でもそれしかないかもしれない



266 名前:デフォルトの名無しさん mailto:age [2019/04/26(金) 04:22:09.54 ID:51IpWYw80.net]
スクリプト書けばいいのに
シェルスクリプトならPOSIXに対応した環境で使えるし
WindowsならPowerShellとかBATファイルとかあるじゃん
スクリプトじゃなくてプログラムでも良いけど
それができない環境はないよ

JavaのクロスプラットフォームはJVMが環境の差異を吸収するからソースコードコンパイルし直さなくて平気だよってものなのでカレントディレクトリが実行環境によって変わりますっていうのは別の事柄だよ

Java製のV2CやEclipse、NetBeansといったソフトウェアもjarを直接起動することないよ、起動用のプログラムは別で用意されてて一緒に配布されてる

カレントディレクトリの概念は便利なものだよ

267 名前:デフォルトの名無しさん [2019/04/26(金) 04:28:32.96 ID:Q79mrf5i0.net]
便利なのはわかるんだ
例えばmkdirだって、どこかに置かれたプログラムで、カレントディレクトリにおいて作用するわけで。
関数的なプログラムはそれでいい。

でも状態を持つプログラムにおいてそのプログラムが置かれたフォルダに状態を作るというのも便利なものだ。
これはOOP的。
エンドユーザーからすれば、良く分からんところに状態を作られるのは嫌。

268 名前:デフォルトの名無しさん mailto:age [2019/04/26(金) 04:34:30.93 ID:51IpWYw80.net]
>>264
じゃあユーザーにはスクリプトを配布してそれを実行してもらうようにすればいいよ

269 名前:デフォルトの名無しさん mailto:age [2019/04/26(金) 04:50:17.67 ID:51IpWYw80.net]
カレントディレクトリ無視してjarのディレクトリで動作しますというのがユーザーにとって迷惑なこともあるわけでユーザーがコントロールできるのが望ましいのじゃないかな

OOPや関数型プログラミングは今回の件と関係があるとは思えない

270 名前:デフォルトの名無しさん mailto:age [2019/04/26(金) 05:21:05.77 ID:51IpWYw80.net]
・プログラムの動作上必要なファイルをjarと同じ場所に配置する
・プログラムではそのファイルに相対パスでアクセスする
という要件でしょ

271 名前:デフォルトの名無しさん mailto:age [2019/04/26(金) 05:55:44.11 ID:51IpWYw80.net]
相対パスはカレントディレクトリからのパスなので
カレントディレクトリを変えるしかなく
スクリプトでカレントディレクトリを変える

jarのパスを引数で渡すなり実行時に取得するなりして
Path.resolveメソッドで相対パスを解決する

272 名前:デフォルトの名無しさん mailto:age [2019/04/26(金) 06:01:41.80 ID:51IpWYw80.net]
他にあるかなー

273 名前:デフォルトの名無しさん [2019/04/26(金) 06:30:18.37 ID:Q79mrf5i0.net]
・個人情報が含まれることがあるから絶対パスを使いたくない。

274 名前:デフォルトの名無しさん [2019/04/26(金) 07:10:21.98 ID:pn/dKCHp0.net]
>>270
その理由がよくわからない
パスはプログラム内部で使用するだけじゃないの?
パスを公開するん?

275 名前:デフォルトの名無しさん [2019/04/26(金) 07:39:19.02 ID:pn/dKCHp0.net]
カレントディレクトリからの相対パスを使用したとしても
Path.of(".").toAbsolutePath()
としたらプログラムでは見れるので
プログラムに対して絶対パスを隠す意味はないですよね

絶対パスを指定するとしたら実行時にスクリプトで絶対パスを取得して
javaに渡すなり、javaから取得するなりすると思うんですよ

Path resourcePath = ...;
Path text = resourcePath.resolve("text.txt");

こんな感じで
ログに出力したくないというのであればtext.getFileName()をログに出力するようにすればよいかと
絶対パスを使いたくない意味がよくわからない



276 名前:デフォルトの名無しさん [2019/04/26(金) 08:25:41.39 ID:QL2+v1a40.net]
>プログラムの動作上必要なファイルをjarと同じ場所に配置する
この要件が意味不明過ぎる。
初めからプログラムが知っているべきものなら、CLASSPATHから辿れるResourceでいいし、
外部から与えられるファイル(設定ファイルとかデータファイルとか)なら、
ユーザが「知っている」はずだから、それに従うだけ。

277 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 09:02:13.01 ID:yevOEnv90.net]
自分ならjarのあるディレクトリに移動してプログラムを起動するバッチファイルを使うわ。
プログラムではカレントディレクトリにあるはずのファイルが無かったらエラーを吐いて止まる。

278 名前:デフォルトの名無しさん [2019/04/26(金) 09:21:40.52 ID:v0BTRdTiM.net]
それosごとに書くの?
write everywherewww

279 名前:デフォルトの名無しさん [2019/04/26(金) 09:35:16.97 ID:YRtkzMZRa.net]
Write once
Bug anywhere

280 名前:デフォルトの名無しさん mailto:age [2019/04/26(金) 09:44:37.15 ID:pkS4CFHAM.net]
>>275
シェルスクリプトならUnix系のOSで使える
WindowsならPowerShellでいんじゃないかな
実質2つだけかと []
[ここ壊れてます]

282 名前:デフォルトの名無しさん [2019/04/26(金) 10:00:15.39 ID:QL2+v1a40.net]
頭悪すぎ。
権限とかセキュリティを考慮すれば、ワーキングディレクトリもユーザ側に委ねるべきもの。

283 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 13:39:16.32 ID:A/WNBxWE0.net]
>>258
Ruby では、Windows のパス区切りも、/ で統一されている。
Dir.glob( 'C:/Users/Owner/Pictures/*' )

Rails では「設定より規約」というポリシーだから、何も設定しない場合には、
プロジェクトフォルダ内でのリソースの置き場や、
それらのdeploy 後の置き場や、アクセス方法も決まっている

このように、フレームワークを使うと、その規則に従うから、何も考えなくてよい!

284 名前:デフォルトの名無しさん [2019/04/26(金) 14:10:43.88 ID:YRtkzMZRa.net]
>>279
え?Windowsって昔からプログラムでファイルオープンする時は / 使えなかったっけ?
昔々 Delphi とかで使えた記憶があるんだけど。言語の問題じゃなくて Windows API が / も受け付けてるって事ね。
コマンドラインから受け付けないようになってる理由は昔から / をスイッチとして使ってるからだと思う。

285 名前:279 mailto:sage [2019/04/26(金) 14:36:03.51 ID:A/WNBxWE0.net]
C:\Users\Owner\Pictures\

Python では、\ をエスケープするために、\\ を2つ使った、表記をよく見る。
C:\\Users\\Owner\\Pictures\\

一方、Ruby では、
C:/Users/Owner/Pictures/



286 名前:デフォルトの名無しさん [2019/04/26(金) 14:41:28.21 ID:YRtkzMZRa.net]
>>281
わからんけど試しにWindowsのPythonで / でやってみな。多分できる。
Perl もできた。

てか、言語関係ない筈。

287 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 15:17:33.53 ID:YKU/5GWf0.net]
スレチ

288 名前:デフォルトの名無しさん [2019/04/26(金) 21:05:21.66 ID:sJC66QNU0.net]
Rubyキチは黙ってスルー。

289 名前:デフォルトの名無しさん [2019/04/27(土) 00:27:38.86 ID:0PNVGbCs0.net]
カレントディレクトリをユーザ側に委ねると
前回のセーブデータを必要とするとき、GUIとかでユーザーに設定してもらう必要がある。
アプリフォルダに入ってれば自動的に見つけれる。

俺はカレントディレクトリをユーザ側に委ねる使用法を否定していない。
ちゃんと読んでくれ。誰もそんな事は言ってない。
ただアプリによってアプリフォルダに状態を持つ方法が必要になると言ってる。
しかもそれを相対パスとして実現できる必要がある。

この話は、Oracleも必要性を認めていて、しかし問題があり却下していたはず

290 名前:デフォルトの名無しさん [2019/04/27(土) 00:35:07.92 ID:0PNVGbCs0.net]
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4045688
>A chdir that has inheritable thread local semantics is much safer and
clearly useful, but it is quite an implementation challenge.

291 名前:デフォルトの名無しさん [2019/04/27(土) 00:38:18.41 ID:0PNVGbCs0.net]
カレントディレクトリを大部分のアプリにおいてユーザ側が制御できる事と
一部アプリにおいてアプリ側が制御できる事は両立する。
誰もカレントディレクトリをユーザ側で制御する事を否定してないのに、なんでそんな話が出てくる?

292 名前:デフォルトの名無しさん [2019/04/27(土) 00:45:30.79 ID:0PNVGbCs0.net]
> It's really too bad that there is no system interface that allows a
> program to save and restore the current working directory reliably

Ruby is another application platform that embraces threading and has a
process-wide chdir. In the latest ruby release, a warning is issued if
chdir is used in a program with more than one active thread.

ルビーではプログラム側でchdir出来ると書いてある。
そういう需要があるという事だろう。
しかしプロセス単位で設定するのは危険で、
スレッド別に設定できるべきだという意見が2つ出ている。

例えば1プロセスでマルチユーザーを達成するプログラムがあった場合、
アクセスしたユーザーに応じてchdirできる。

APIの用途なんかいくらでも出てくる。
Javaが実行時chdirを持たない事は欠陥だ。
アプリコードで実行されたクラスのパスを取得してそれをプリフィクスにすればいいと
上で意見が出ているが、それではライブラリの動作が透過的に変更されない。

293 名前:デフォルトの名無しさん [2019/04/27(土) 00:53:45.71 ID:0PNVGbCs0.net]
俺の説明が正しいかは分からない。
俺は細かいところを間違えたかもしれない。

でも、javaが実行時chdirを持たない事が欠陥なのは間違いない。

294 名前:デフォルトの名無しさん [2019/04/27(土) 01:06:06.63 ID:0PNVGbCs0.net]
カレントディレクトリをユーザーが指定しつつ
同時にプログラム側でchdirすべき場合があるじゃないか。

1プロセスでマルチユーザーからのアクセスを受け付けるプログラムで、
ユーザーがカレントディレクトリを指定して、
プログラム側でスレッド別にユーザーが指定したカレントディレクトリにchdirする場合。

295 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 01:11:53.55 ID:Je+FHpVzM.net]
>>285
だからその用途の場合は実行時にjarの場所を取得して、そこからの相対パスで扱うべきって話をしてるわけだが
相対パス=カレントディレクトリを基準に使わなければいけない、みたいな謎ルールがあるのか?



296 名前:デフォルトの名無しさん [2019/04/27(土) 01:17:58.25 ID:0PNVGbCs0.net]
これ2006年ごろ会社でBtoBtoCのシステム作っててやったの思い出した
クライアント別にchdir
ApacheとLinuxの仕組みを活用して達成できたけど、
クロスプラットフォームなやり方は無いと思う。

297 名前:デフォルトの名無しさん [2019/04/27(土) 01:18:26.51 ID:0PNVGbCs0.net]
>>291
>それではライブラリの動作が透過的に変更されない。

298 名前:デフォルトの名無しさん [2019/04/27(土) 01:19:54.56 ID:0PNVGbCs0.net]
>>286-288>>290>>292あたり読んでね
読まずに返信したらダメだよ
理解してから書いて

この話題は>>290が完ぺきな説得力を持って俺の中では終わってる

299 名前:デフォルトの名無しさん [2019/04/27(土) 01:21:56.36 ID:0PNVGbCs0.net]
そのオラクルのサイトでもこう書かれてる。
>This needs co-operation from the runtime (if we chdir() the VM, then the
IO libariries would get transparently updated).

chdirはライブラリの動作を透過的に変更できる。
お前らが言ってるクラスファイルのパスを取得して接頭辞にしろというアイデアは、
ライブラリの動作で問題が生じる。

300 名前:デフォルトの名無しさん [2019/04/27(土) 10:12:27.47 ID:Msh+cD000.net]
>>294
自己完結

301 名前:デフォルトの名無しさん [2019/04/27(土) 10:12:49.27 ID:Msh+cD000.net]
自己完結しましたってことね

302 名前:デフォルトの名無しさん [2019/04/27(土) 10:13:08.94 ID:Msh+cD000.net]
ここは質問スレッドなので質問ありますか?

303 名前:デフォルトの名無しさん [2019/04/27(土) 10:28:47.67 ID:Msh+cD000.net]
カレントディレクトリのファイルを読み書きするライブラリなんてあるのかね
ファイルを読み書きするならFileなりPathなりInputStreamなりOutputStreamなり
を引数として取るように作るんじゃないかな

もともとはカレントディレクトリがプロジェクトのディレクトリになるという
勘違いから起こった話題だけど何を解決しようとしてるのかよくわかんない

304 名前:デフォルトの名無しさん [2019/04/27(土) 11:40:58.78 ID:0PNVGbCs0.net]
もともとは「カレントディレクトリが何になるか環境依存で決まる」という話。

ライブラリでカレントディレクトリに依存しているものはたくさんある。

305 名前:デフォルトの名無しさん [2019/04/27(土) 12:51:28.78 ID:Msh+cD000.net]
>>300
具体的になんてライブラリなの?
たくさんあるうちから比較的有名なものを教えていただけると



306 名前:デフォルトの名無しさん [2019/04/27(土) 15:14:58.99 ID:0PNVGbCs0.net]
具体例をあげさせようというのは、
「そんなライブラリ存在しない」と本気で思えるからなのか?
言語仕様的にカレントディレクトリへの依存なんてFileを相対パスで使ったら生じるもので
それが一般に無いなんて前提は持ちようがない。
お前は単に俺に無駄な手間をかけさせようとしているだけとしか思えないんだが?
お前の本心は何だ?”本気でその質問がここに居る人たちをより優れた認識に導くと思っているのか?”
あるいはただのクズか?

307 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 15:17:25.68 ID:0mLMZlTmM.net]
まあ解決したみたいだしもういいでしょ

308 名前:デフォルトの名無しさん [2019/04/27(土) 15:35:16.29 ID:0PNVGbCs0.net]
Javaを使う全ケースで共通のカレントディレクトリ依存のファイル作成処理。
https://docs.oracle.com/javase/jp/8/docs/technotes/guides/troubleshoot/felog001.html
このファイルが作成される事はプログラム側の問題だから
プログラム側のフォルダに作成されるのは基本的に正しい。

多重起動防止テクニック
d.hatena.ne.jp/knowledgefort/20090902/1251885412
1フォルダにつき1つしかプログラムを起動させたくないなら、
プログラム側のフォルダにロックファイルを作るのが正しい。

HTTPサーバつきのDBはプログラム側のフォルダにDBを作る事が多いだろう。

他にも全利用のログや統計が必要な場合。

結局一人で調べて一人で解決したほうがいいんだなと思った。
正しい着眼点と方向性で進めててもアホ呼ばわりされる。
こいつら極限まで分かり易く示さない限りアホ呼ばわりしてきそうだ

309 名前:デフォルトの名無しさん [2019/04/27(土) 15:41:51.22 ID:0PNVGbCs0.net]
ああ・・・エラー処理はカレント側に作成されてるな

ただ、これもそうだが、分かり易い事例を示すのが難しいだけで俺の意見が正しい。
現実のプログラムであればそういうシステムを多々見てきたし、
プログラム側のフォルダに状態を作るべき場合は存在する。
たとえ事例が無くてもそれが存在するのが分かる。

オラクルのエンジニアだってそういうメリットがあるから
スレッド別の継承型chdirが望ましいと書いてたろ?

「自分でわかる」「著名人もそう言ってる」
この段階からさらにお前らが分かるような事例を持ってこいってのはさらに難しい

310 名前:デフォルトの名無しさん [2019/04/27(土) 16:11:19.17 ID:Msh+cD000.net]
>>302
俺はカレントディレクトリのファイルを読み書きするライブラリを知らない
君はそれをたくさん知ってるということだったので
教えてもらいたかっただけだよ

https://docs.oracle.com/javase/jp/8/docs/technotes/guides/troubleshoot/felog001.html
これはファイルパスを指定できるようになってて
デフォルトではカレントディレクトリだよってことですね
ライブラリではなくてjavaの仮想マシンがそういう動作をするってことですよね

d.hatena.ne.jp/knowledgefort/20090902/1251885412
これはカレントディレクトリを使ってはいけないんだってことを
君は言いたいのかな、よくわかんなかったけど

311 名前:デフォルトの名無しさん [2019/04/27(土) 16:12:22.32 ID:nhVWQaIpM.net]
例の一つもしめせない正しさなんかいらない。
連休明けにお前の席、ねーからー!w

312 名前:デフォルトの名無しさん [2019/04/27(土) 16:38:17.73 ID:Msh+cD000.net]
>>305
君が見てきたいろんなシステムはjarを直接起動するシステムばかりだったの?
特殊な環境にいたのかなと

プログラム側のフォルダに状態を作るべき場合が存在するのは否定しないよ
そういうこともある、その場合はjavaを実行する前に指定しましょうというのが
一般的なやり方だよ

前にも挙げたけどEclipseとかV2CとかNetBeansとか
Java製のソフトウェアは起動用のプログラムとjarが別れてるよ

アプリケーションサーバのTomcatなんかもそうだよ
起動用のスクリプトの中でパラメータを指定したり環境変数を定義したり
して実行環境を整えてjavaを実行してるよ

313 名前:デフォルトの名無しさん [2019/04/27(土) 16:55:22.93 ID:Msh+cD000.net]
↓ここみるかぎりworking directoryをJavaで変えるのはできそう
https://stackoverflow.com/questions/840190/changing-the-current-working-directory-in-java

314 名前:デフォルトの名無しさん mailto:sage [2019/04/30(火) 23:09:51.16 ID:ase7yW+4a.net]
お前ら6ヶ月超えたLTSはどうしてる?
ぶっちゃけAdapt OpenJDKとOpen J9しか無かった頃はOpen J9は影響力無いだろうからAdapt OpenJDKがupstreamに変更内容pushしてくれれば済んだじゃん。
ディストロ乱立した今Azulみたいに大してupstreamに貢献してない所あるからディストロ毎の変更の差が広がるけど。

315 名前:デフォルトの名無しさん mailto:sage [2019/05/03(金) 17:48:48.96 ID:iE5UbyHCM.net]
JAVAも人気が無くなっちゃったね
勉強しようかと思ってたけど今は何がおすすめ? C++あたりかな?



316 名前:デフォルトの名無しさん [2019/05/04(土) 00:54:34.37 ID:wCMSKwhZa.net]
Kotlin もよろしく

317 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 13:16:22.90 ID:ial3K7dNM.net]
天の邪鬼なんで今からjava勉強しようと思います
もとの専門が強電と計装なんですけどつながる所ありますか?

318 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 13:40:45.97 ID:9LoLzBoXM.net]
理系脳があれば文系Javaマの大多数よりは上
現場のレベルの低さは想像を絶する

319 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 13:44:38.65 ID:iQFGW4dP0.net]
プログラムの才能は理系・文系とは別

320 名前:デフォルトの名無しさん [2019/05/06(月) 20:21:56.86 ID:NYoOX9LAa.net]
なんだろうね。数学的能力はあった方が良いがそれだけではないし。
手順を言葉で表現する能力もある必要があるがそれだけでもないし。

321 名前:デフォルトの名無しさん mailto:sage [2019/05/06(月) 23:47:19.20 ID:HTogq+szM.net]
よくわからんまとめサイトにjavaって読書好きな人向けみたいに書いてあったんだけど本当?
何時間も細かい文章読んでても気にならないタイプなんだけど
ただイメージわかない物は苦手ですが(英語とか辞書とか)

322 名前:デフォルトの名無しさん mailto:sage [2019/05/07(火) 00:32:26.40 ID:nFO0GtdSM.net]
>>317
長くて複雑な資料を読んで理解できる能力は言語関係なくITエンジニアにとって極めて重要
応用情報の午後の過去問なんかをダウンロードして見てみたらイメージ掴みやすいと思う
あれはよく読めば大して知識なくても解けるもので、そういう人は向いてる

323 名前:デフォルトの名無しさん mailto:sage [2019/05/07(火) 06:49:28.50 ID:VFlw4N8yM.net]
>>318
ありがとうございます
読んでみます

324 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 00:47:24.78 ID:S67A12g30.net]
Kotlinはjsにコンパイルする環境がすでに整ってるけど
Javaはgwtがコケて完全に死んだよね

325 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 09:32:17.94 ID:86ZxxcQ40.net]
KGBに監視されている



326 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 21:35:28.39 ID:qPClD7aOM.net]
某組み込み系の比率が高い県の未経験者です
組み込み系(C言語)とWeb系(PHP)両方の経験を積みたいんですが最初にjavaをがっつりやるのはありですか?

javaがっつりやって流れでC言語もPHPも出来るようになる作戦なんですが虫が良すぎでしょうか

それとももっと良い言語がある?

327 名前:デフォルトの名無しさん [2019/05/09(木) 21:52:11.67 ID:pU2pcSqk0.net]
JavaがわかればPHPは余裕
C言語はクラスがなかったりポインタとかメモリ管理とかJavaの常識が通用しない
ループとか条件分岐とか関数はほとんど同じだけど
やってみたらいいじゃない1週間あればいけるっしょ

328 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 23:28:52.95 ID:vGDrZ5vaa.net]
>>323
なるほど、古いほど難しい感じ?なんですかね?
とりあえず今やってるjavascript終わったらしばらくjava一本に絞ってみます

329 名前:デフォルトの名無しさん [2019/05/10(金) 13:49:52.47 ID:sZdncDhCM.net]
brainfuckはcより新しいぞ

330 名前:デフォルトの名無しさん [2019/05/10(金) 20:42:23.89 ID:eVjZi54sa.net]
ttps://sbfl.net/blog/2016/05/20/javascript-danmaku-stg-3/
にある回転弾幕を参考に同じように回転弾幕を作成しているのですが、回転しません。
radianの計算が違うのでしょうか?

ttps://pastebin.com/wFCdcf0A

331 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 15:18:49.84 ID:LmLPA4i2a.net]
すいません、今からならjava8やるべきですかそれとも11ですか 
まあ11は探しても本無いんで何すべきかわかんないですが

332 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 16:07:46.34 ID:fPgpveE6M.net]
11でコード書いたら下方互換がないのってLambdaのvarくらいか。
非互換さえ理解しておけば、11から始めてもいいんじゃないか。
どうせそんなこと聞いているくらいだから、Tiger時代くらいのAPIしか
使わんのだろうし。

333 名前:デフォルトの名無しさん [2019/05/13(月) 17:30:27.34 ID:rnX6vlMta.net]
Kotlinもよろしく

334 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 22:00:41.33 ID:Il2FdqNea.net]
今からやるならモジュールから入ったほうが良いから11かな。
下位互換のためだけにあるunnamed moduleとautomatic moduleの
ルールが複雑だから9以降初学者は最初に普通のモジュール使ったほうが覚えるの簡単だと思う。

あとは>>328の言う通り8以降でapiかなり変わってるからapi覚え直したほうが良い。

335 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 22:16:51.52 ID:9QsNbP8la.net]
今からやるんだったら
まず Java をやらない方がいい
としか言いようがないな



336 名前:デフォルトの名無しさん mailto:sage [2019/05/13(月) 22:23:05.62 ID:nkZ+yA1j0.net]
Javaのめんどくさいところを知っておくとよい

337 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 08:21:57.15 ID:YPQOCYqpa.net]
ありがとうございますm(_ _)m






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<270KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef