★★Java質問・相談スレッド183★★

■ このスレッドは過去ログ倉庫に格納されています
2020/05/06(水) 22:12:08.99ID:q8N1X/Ij0
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://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質問・相談スレッド182★★
https://mevius.5ch.net/test/read.cgi/tech/1542595026/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/03/13(土) 22:17:54.17ID:zRCYlte/0
ggrks(後出し)
2021/03/14(日) 05:24:50.44ID:IL1Rx7pe0
wget で、サイトのリソースも含めて、丸ごとダウンロードできるのでは?
ひょっとしたら、curl でも出来るのかな?

Ruby ではRails とか、Nokogiri, Selenium Webdriver などでスクレイピングして、
a タグを抜き出すとか
2021/03/14(日) 06:56:16.15ID:btOQNnrQ0
できるけど robot.txt の存在には気を付けてね
一歩間違えれば攻撃になっていまうから
2021/03/14(日) 11:00:05.88ID:5cMH1VZO0
怪しい事やってんだろ、自覚があるかどうかは知らんが
2021/03/14(日) 11:19:34.50ID:BNc+xu8pr
別スレでdata-*属性に書かれている画像がwgetでダウンロードできなくて困ってる人いたな
HTML5ではありふれた状況だしwgetで正規表現による属性追加くらい標準機能で受け入れてくれてもいいのにと思ったわ
2021/03/14(日) 12:46:13.81ID:IL1Rx7pe0
data-* 属性の使い方は、各ユーザーが決めるものだから、使い方を予測できない

例えば、5ch では各投稿に、投稿番号・ID などの、3つのdata-* 属性を使っている

<div class="post" id="692" data-date="NG" data-userid="ID:5su42aEd0" data-id="692">
2021/03/14(日) 23:13:29.77ID:RhoQSMwe0
予測できない多目的属性だからこそ、用途を知っている可能性があるコマンド利用者が指定できればいいのにという話なんだが…
いつものRubyおじさんかな
2021/03/15(月) 00:10:06.44ID:W4mhVG7e0
>>698
あれは画像はダウンロードできてるけどdata属性に書かれてる絶対パスを相対パスに変換してくれないから
JSで処理してるリンクをクリックしてもオフラインだと動かないという話だったかと
正規表現使った簡単な置換コマンド1つで処理できる内容なのでwgetで指定できる必要性はないと思う

仮にdata属性に指定された画像がダウンロードできてないという話だったとしても
grepしてwgetするコマンド1つ書けばいいだけなのでは?
2021/03/15(月) 02:33:53.76ID:1qxK5Hvcr
>>701
別スレの話でモメてもしょうがないので回答だけ
ダウンロードできてるというのは全部回答者の憶測だったよ
wgetしてgrepしてwgetシーンが時々あるならツール自身がやってくれた方がいいと思ったんだよね
別にそのオプションがないから糞だとか言うつもりはない
2021/03/15(月) 02:41:03.52ID:1qxK5Hvcr
>>702
誤字
wgetしてgrepしてwgetする、だった
あとwgetの仕様を見たら既知の属性しか処理対象じゃなかったんだよね
んでオレオレ属性に対応するパッチを書いてる人もいたので、今やdata-*も広く使われてるんだし公式でとっとと取り込めばいいのにと思ったわけよ
2021/03/20(土) 16:56:48.35ID:Wp3MfYRr0
初見

大量のPDFを一括処理しようと思ってる。
やりたいことは、PDFをAcrobatで開いた時の「文書のプロパティ」の「レイアウトと倍率」の各項目を所望の状態にしたい。それを一括大量に。

Javaのライブラリでそんな事ができるのってある?
705デフォルトの名無しさん (ワッチョイ fb01-qYeW)
垢版 |
2021/03/20(土) 17:12:34.24ID:ct9wvzVp0
>>704
iTextでできそう
https://kb.itextpdf.com/home/it7kb/faq/how-can-i-set-the-zoom-level-of-a-pdf-using-itext-7
2021/03/20(土) 18:37:44.87ID:Wp3MfYRr0
>>705
サンクス
707デフォルトの名無しさん (アウアウウー Sae9-iavC)
垢版 |
2021/04/05(月) 00:17:31.28ID:1w8DpgCTa
>>232
あ、これコンパイルでもなく、ランタイムでもない変なエラーね。対応してませんみたいなやつ。

eclipseのバージョン2019年頃のなら普通に Swingできました。

どうしてもあかんときは、コマンドラインで javac, javaして動かしたら行けるはずです。
2021/04/05(月) 13:47:55.56ID:MaoiVFnr0
javaに参照渡しはないと思ってたのですが以下のコードをみるとfは参照渡しに見えます
コンパイラの最適化とかでインライン展開でもされるのでしょうか
class T{
public int a;
public T(int v){
a=v;
}
}
public class HelloWorld {
public static T f(T a){
a.a = 7;
return a;
}
public static void main(String[] args) throws Exception {
// Your code here!
T a = new T(10);
T b = new T(10);
T c = f(a);
T d = a;
System.out.println(a.a);
System.out.println(b.a);
System.out.println(c.a);
System.out.println(d.a);
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
2021/04/05(月) 13:50:36.82ID:MaoiVFnr0
上のコードの実行結果

7
10
7
7
T@6d06d69c
T@7852e922
T@6d06d69c
T@6d06d69c

cは参照アドレスが異なる者と思っていました
fの引数の箇所とreturn aの箇所でそれぞれ参照の値渡し用のコピーが作られると思っていたのですが
違うのでしょうか
2021/04/05(月) 14:27:37.33ID:7MHi1+fTM
どこでそんな知識を…
むしろ、プリミティブ型以外は全て参照渡しだよ
2021/04/05(月) 14:35:13.55ID:8inEG4bOa
参照渡しと言い切ると齟齬がある
fの中でaに再代入した場合呼び元のオブジェクトには波及しないから
2021/04/05(月) 15:11:57.74ID:yRGvsIRm0
>>708
wikipediaの「引数」の項目みれば? たぶん「参照渡し」を勘違いしてるだけかと。
713デフォルトの名無しさん (ワッチョイ 0d9c-h+YV)
垢版 |
2021/04/05(月) 19:31:09.38ID:V741/wtv0
ときどき出てくる参照渡しを勘違いしている人ってなんなんだろ?
C言語しか知らないのかな?
C言語のポインタ引数のことを参照渡しだと思ってそう
C言語のポインタ引数は値渡しだよ
ていうかC言語とJavaは値渡ししかない

C++かC#をやると参照渡しがなんなのか分かるよ
C言語とJavaをやってるだけでは参照渡しは理解できない(だって参照渡し出てこないもん)
714デフォルトの名無しさん (ワッチョイ 0d9c-h+YV)
垢版 |
2021/04/05(月) 19:36:15.68ID:V741/wtv0
いったいどこで「参照渡し」なんて言葉覚えてくるんだろ
Javaにはそんな言語機能ないのにさ
2021/04/05(月) 20:51:13.92ID:2g7RifS+0
C では変数は、値を入れる箱だけど、
他の言語では、変数は名付け・ラベル

箱に入れるようなイメージをしてると、参照のコピーで苦しむ。
immutable・変更不能なのは、Primitive 型だけ

それ以外は、deep copy していく際、
再帰的に、Primitiveに突き当たるまで、実体がコピーできないので、
参照のリンクを断つのに苦労する
716デフォルトの名無しさん (ワッチョイ 0d9c-h+YV)
垢版 |
2021/04/05(月) 20:57:44.08ID:V741/wtv0
C言語とJavaは同じだと思うけどなー
C言語のポインタ変数=Javaのオブジェクト変数(参照型)だよ
717デフォルトの名無しさん (ワッチョイ 15f6-s+Uo)
垢版 |
2021/04/05(月) 21:42:04.48ID:H5o31n3E0
このソースの結果がなんでこうなるのかわかりません。
言語仕様を理解していれば説明できるといわれました。
なんでこうなるのでしょうか?

public class Main {
 public static void main(String[] args) throws Exception {
  Integer int050a = 050; Integer int050b = 050;
  Integer int100a = 100; Integer int100b = 100;
  Integer int150a = 150; Integer int150b = 150;

  Class<?> clazz = Integer.class;
  Field field = clazz.getDeclaredField("value");
  field.setAccessible(true);

  field.setInt(int050a, 050 + 1);
  field.setInt(int100a, 100 + 1);
  field.setInt(int150a, 150 + 1);

  System.out.printf("int050=%d,%d(%b)\n", int050a, int050b, int050a==int050b);
  System.out.printf("int100=%d,%d(%b)\n", int100a, int100b, int100a==int100b);
  System.out.printf("int150=%d,%d(%b)\n", int150a, int150b, int150a==int150b);
 }
}

結果
int050=41,41(true)
int100=101,101(true)
int150=151,150(false)
2021/04/05(月) 21:51:16.81ID:5mhyIfkaM
Javaの配列やオブジェクト引数の渡し方は値渡しと参照渡しの中間みたいな感じ
この中間的なものに名前がついていないことが学習しにくさを招いてるような気もする
2021/04/05(月) 22:08:41.60ID:P35uBEDX0
>>717
050はoctet

にしても一瞬にして見る気を奪う変数名
2021/04/05(月) 22:10:43.10ID:/OfavUpo0
>>717
8進数
2021/04/05(月) 22:12:11.77ID:2g7RifS+0
Ruby では、すべてがオブジェクトだから、数値型.メソッド、と書ける

Primitive 型がある言語では、Primitive型.メソッド、とは書けない。
Primitiveには、メソッドが無いから

メソッドを呼びたい際、Box・オブジェクト化する。
オブジェクトで包む

そうすると、オブジェクト.メソッド、と書ける。
Box/Unbox 化
722デフォルトの名無しさん (ワッチョイ 1b01-ugfq)
垢版 |
2021/04/05(月) 22:54:58.29ID:BlJGn6z90
>>717
これかな

5.1.7. Boxing Conversion
https://docs.oracle.com/javase/specs/jls/se16/html/jls-5.html#jls-5.1.7

If the value p being boxed is the result of evaluating a constant
expression (§15.29) of type boolean, byte, char, short, int, or long, and
the result is true, false, a character in the range '\u0000' to '\u007f'
inclusive, or an integer in the range -128 to 127 inclusive, then let a and
b be the results of any two boxing conversions of p. It is always the case
that a == b.

ハイパー超訳だけど
ボックス化された値が-128〜127の場合は同じオブジェクトになります、ってことのよう

ラッパークラスもコンスタントプールに格納されるんかね、これは知らなかった
2021/04/05(月) 22:57:24.44ID:BF+vBiwm0
>>713
>C++かC#をやると参照渡しがなんなのか分かるよ
偉大なるpascal様を忘れ給うな
724デフォルトの名無しさん (ワッチョイ 1b01-ugfq)
垢版 |
2021/04/05(月) 23:00:05.89ID:BlJGn6z90
>>708
えっと、参照渡しの定義は
仮引数への代入によって実引数が変わることなんよ

a.a = 7;

これは仮引数への代入ではないよ
.(ドット)演算子があるのでオブジェクトの状態を変えてるだけ

変数への代入とオブジェクトの状態を変える操作は異なるもの、という認識が必要

a = new T(7);

としても実引数は変わらないっしょ、だからJavaは値渡しなんよ
725デフォルトの名無しさん (ワッチョイ 1b01-ugfq)
垢版 |
2021/04/05(月) 23:02:02.65ID:BlJGn6z90
>>718
一応、共有渡しという呼び方はある
2021/04/05(月) 23:14:53.36ID:2g7RifS+0
まず、等価・等値の区別を学ぶべき。
Primitive型とオブジェクトの等価・等値とは、何を比べる事なのか?

内包する値が等しいのか、
オブジェクトIDが等しいのか?
727デフォルトの名無しさん (オッペケ Sr01-jPF6)
垢版 |
2021/04/06(火) 08:57:10.74ID:LwA3WJBer
GoogleがJava SE APIをコピーしたことは、プログラマーが自分の才能を生かして新しいプログラムを開発するために必要なコードのみを含んでおり、法律上、その素材におけるフェアユースにあたる。
2021/04/06(火) 11:02:49.78ID:KbcOEQRB0
それがどうかしたの?
729デフォルトの名無しさん (ワッチョイ 23a5-qoZl)
垢版 |
2021/04/06(火) 11:26:18.57ID:pJApQ9S90
HOTな話題だろ
勝訴したんだから
730デフォルトの名無しさん (ワッチョイ 0d9c-h+YV)
垢版 |
2021/04/06(火) 11:29:21.61ID:siOuNgG90
今日、12年に渡るGoogleとOracleの裁判に判決が出たんだよ!

GoogleのAndroidでのJava使用はフェアユースだからOracleの権利を侵害していないと認められた
これはJavaコミュニティにとっても喜ばしいニュースだね

権利侵害が認められるようならGoogleはJavaを捨てるなんて話も出ていたから、そうならなくて本当によかった!
2021/04/06(火) 13:02:15.98ID:hd98bw+B0
グーグル勝利でKotlin大敗北!
2021/04/06(火) 13:29:35.88ID:M2YZof7pa
>>730
Fuchsia「シッテタ」
2021/04/06(火) 13:55:22.95ID:KbcOEQRB0
>>729
ならそうかけ、スレチだけど
2021/04/06(火) 16:14:50.37ID:D/UA/358a
java勝ったからもうお前に用はない

  ○ ←google
 く|)へ
  〉 ヾ○シ ←Kotlin
 ̄ ̄7 ヘ/
  /  ノ
  |
 /
`|
2021/04/06(火) 20:44:53.68ID:AUQo/ocE0
コトリンwは消えていいよw
2021/04/07(水) 00:08:35.01ID:/VvrJao60
Oracle は、Java を独占して、大儲けしようと思っていたけど、大失敗
2021/04/07(水) 03:59:02.94ID:ALhqLzoC0
これで、java のクラスライブラリを C# や C++ に移植できる‥‥
2021/04/07(水) 14:59:25.85ID:ODWVZMHP0
共有渡しなどでググってみましたがまだ理解できません
比較のためC++の例を。こっちが頭にあるから混乱してたのかもしれない
#include <stdio.h>
struct T{ int a; T(int i){a=i;}};
T f(T a){ return a;}
int main(){
T a(10);
T b=f(a); //javaと違ってbのアドレスは変わる。ここの挙動がjavaの疑問点
T c = a; //これもjavaと違って新しいコピーが作られる。コピコン
T* d = &a; //ポインタ。同じアドレスをさす
T& e = a; //参照。同じアドレスをさす
printf("%d\n%d\n%d\n%d\n%d\n",&a,&b,&c,d,&e);
return 0;
}
実行結果
286472060
286472064
286472068
286472060
286472060
2021/04/07(水) 15:17:30.71ID:ODWVZMHP0
追記。javaと比較しやすいように参照渡しの関数を追加しました
#include <stdio.h>

struct T{ int a; T(int i){a=i;} };
T f(T a){ return a; }
T& g(T& a){return a;} //前のコードに追加したコード
int main(){
T a(10);
T b=f(a);
T c = a;
T* d = &a;
T& e = a;
T& f = g(a); //参照渡し。同じアドレスをさす。前のコードとの違いはここ
printf("%d\n%d\n%d\n%d\n%d\n%d\n",&a,&b,&c,d,&e,&f);
return 0;
}
実行結果
1519342484
1519342488
1519342492
1519342484
1519342484
1519342484
2021/04/07(水) 15:33:40.19ID:ODWVZMHP0
c++風な理解ですがjavaの共有渡しは
実引数a 値アドレス10 アドレス100
仮引数a 値アドレス10 アドレス101
と言う風に準備されて
仮引数に代入してもアドレス101に代入されるので実引数のアドレス100には影響が無い
値アドレスは一緒なのでa.a=7などと代入すると実引数の値も変化する
こういう理解だったのですがjava的には違うのでしょうか
最初のコードでT c=f(a)としたときにcとaのアドレスが変わらないということは
C++版での参照渡しのコード(関数g)に対応すると考えました
2021/04/07(水) 16:01:59.31ID:IKflwJ+i0
Javaは参照の値渡し

T& h(T& a){
a = T(100);
return a;
}

public static T h(T a){
a = new T(100);
return a;
}
を比べるといいと思う
2021/04/07(水) 16:05:55.74ID:jfZzQJ5j0
ttps://ideone.com/RVYDij

構造体のポインタ(≒Javaの参照型)でなくて
構造体そのもの(≒Javaには存在しない値型)使ってるから混乱するんじゃね?
2021/04/07(水) 19:52:27.21ID:SEhnYi9C0
質問が下手
744デフォルトの名無しさん (ワッチョイ 1b01-ugfq)
垢版 |
2021/04/08(木) 01:40:49.88ID:lOqPs7CS0
JavaのコードはC言語だとこうだよ

#include <stdio.h>
#include <stdlib.h>

struct T {
int a;
};

struct T* f(struct T* a) {
a->a = 7;
return a;
}

int main(){
struct T* a = malloc(sizeof(struct T));
a->a = 10;

struct T* b = f(a);

printf("%d, %d, %p, %p\n", a->a, b->a, a, b);
return 0;
}
745デフォルトの名無しさん (ワッチョイ 1b01-ugfq)
垢版 |
2021/04/08(木) 02:22:43.43ID:lOqPs7CS0
>>740
> 最初のコードでT c=f(a)としたときにcとaのアドレスが変わらないということは
> C++版での参照渡しのコード(関数g)に対応すると考えました

Javaでは変数のアドレスは見れないよ
cとaで参照してるオブジェクトのハッシュ値が出力されてるだけ
cとaの参照先が同じオブジェクトってこと

参照渡しは変数を参照するって意味で
共有渡しは変数の参照先を共有するってこと
746デフォルトの名無しさん (ワッチョイ 23ad-0pr0)
垢版 |
2021/04/08(木) 02:30:20.54ID:SAft2z2v0
Java の参照はポインタだと思えば理解は楽だな。C言語だと x->x のように書くが Java だと x.x と書くことになっているだけ。
null だと指す先がないので NullPointerException になる。
2021/04/08(木) 04:31:04.65ID:lDvnXqCb0
Java には、構造体そのものが無いのか。
構造体は、内包物がすべてコピーされるだろ

つまり、異なるオブジェクトがnew されてから、すべての内包物がコピーされる。
つまり、2つのオブジェクトが存在する

一方、構造体のポインタは、内包物がコピーされないし、
コピー用のオブジェクトも、newされないから、
オブジェクトは最初の1つだけしか存在しない

単なる名付け・ラベル。
1つのオブジェクトに、別の名前を付けただけ

幾つのオブジェクトが作られたか、newの回数を数えればよい
2021/04/08(木) 04:41:11.49ID:lDvnXqCb0
変数を、値を入れる箱みたいに思うのは、ダメ。
箱に入れるイメージは、C/C++ だけ

他言語では、変数は名付け・ラベル

新たなインスタンスを作って、コピーしていない。
単に、既存のインスタンスに、別名を付けているだけ

だから代入の前後で、インスタンスは1つしか存在しないし、
new も、されていない

つまり、newの回数と、存在するインスタンスの個数を調べるのが重要

ただし、Primitive はオブジェクトと異なるので、これには当てはまらない
749デフォルトの名無しさん (ワッチョイ 0d9c-h+YV)
垢版 |
2021/04/08(木) 07:41:57.02ID:m1EPbJgQ0
いい加減ウソを撒き散らすのやめてくれないか
750デフォルトの名無しさん (ワッチョイ e2ad-CoCA)
垢版 |
2021/04/10(土) 18:11:02.83ID:JQLnPe3C0
誰も知らない未知の言語の話が始まったようだ。
2021/04/10(土) 20:22:44.15ID:g7cD6dOja
JUnitでテストクラス作って実行すると、ClassNotFoundが出る時はどうしたらいいですか?
Eclipseのプロジェクトをすべて消してイチから作り直したけど、原因が分からないから再発しそうで怖い
2021/04/10(土) 20:25:26.10ID:g7cD6dOja
https://youtu.be/sb95W2Ki5ng
753デフォルトの名無しさん (ワッチョイ 7b9c-08FK)
垢版 |
2021/04/10(土) 20:46:32.06ID:h0FPlujm0
>>751
テストしなければ問題ないよ!
2021/04/10(土) 20:55:22.45ID:fnNsjOwD0
賢い質問のしかた
ttp://www.ranvis.com/articles/smart-questions.ja.html
2021/04/10(土) 21:08:45.15ID:g7cD6dOja
>>754
ありがとうごさいます
参考になりました!
2021/04/10(土) 21:12:04.68ID:g7cD6dOja
>>753
バグらなけば怖くない!
2021/04/10(土) 23:31:05.40ID:sN0ABBktr
Microsoft、「OpenJDK」の自社ビルドをプレビュー公開 〜無償のLTSディストリビューション

https://forest.watch.impress.co.jp/docs/news/1316969.html
2021/04/11(日) 11:13:10.02ID:5s7yLoxeM
JavaからAccessデータベース起動したいのだが
Runtime execだと起動ぐらいしか出来ない
データベース操作するにはCOMブリッジ使えば良いのかUcanAccess使う方が良いのかよく分からない
Apache PoiではAccess操作出来ないよね?
2021/04/11(日) 11:16:54.91ID:JF/oxO5S0
C#使えばいいんじゃね(鼻糞ホジホジ)
2021/04/11(日) 11:26:52.97ID:5s7yLoxeM
Javaで操作したいんだよ
2021/04/11(日) 11:36:53.59ID:Vlz3EsL00
mdbを操作したいのではなくてAccessを動かしたいってこと?
2021/04/11(日) 11:58:49.10ID:5s7yLoxeM
>>761
両方
mdbにJavaからテーブルへ数値書き込みしてから起動
Accessは起動時の設定でクエリー動くマクロやVBAを動かしてデータを整えてレポートを出力させる
2021/04/11(日) 12:05:35.16ID:5s7yLoxeM
やっぱりJavaからAccess帳票出力するって特殊なのかな
ほとんど事例無いからググっても出て来ない
764デフォルトの名無しさん (ワッチョイ 0e01-I5oI)
垢版 |
2021/04/11(日) 12:16:19.31ID:UFkTSZWY0
自分ならUcanAccessでDBを読み書きして
JavaからVBScriptのプロセスを起動して
VBScriptでAccessを操作する

MS OfficeのAPIはCOMでCOMのGCは参照カウントでJavaや.NETのGCは世代別GC
オブジェクトのライフサイクルが違うので動作が不安定になる
PowerShellでOutlookを操作してみてそう思った
2021/04/11(日) 12:55:32.01ID:5s7yLoxeM
>>764
RuntimeでVBScript起動してVBScriptからmdb操作するって方法か、、
テーブル書き込みはUcanAccessか
なるほどね
それぐらいしか簡単な方法無いね
2021/04/11(日) 13:29:55.85ID:5s7yLoxeM
ああAccess起動だけならRuntimeから直接Access起動は出来るね
操作までやるのはVBScriptとか利用せにゃならんけど
2021/04/11(日) 16:14:43.43ID:q1WUTCjn0
Access は poi では扱えないのですか?
2021/04/11(日) 18:15:56.42ID:87+rjU0AM
>>767
PoiでAccess扱えるclassが用意されていない
2021/04/11(日) 18:19:08.61ID:87+rjU0AM
>>767
よってExcelとかはPoiで操作出来るのが一般的
Apache Poi使うな、と言われたらRuntimeでゴリゴリコード書く事になるけど
2021/04/11(日) 18:23:44.98ID:q1WUTCjn0
調べてみると ODBC/JDBC ラインしかないみたいですね
https://stackoverflow.com/questions/45300178/how-to-connect-java-to-ms-access-database
2021/04/11(日) 18:33:00.11ID:8dKzq+eD0
ODBCブリッジはJava8で消されたから小細工しないと無理
2021/04/11(日) 19:00:53.79ID:87+rjU0AM
今はJava8のLTSで運用してる所多いからAccessはUcanAccess使うぐらいしか方法無いと思うけどな
>>771
小細工ってどんな方法?
2021/04/11(日) 19:05:46.55ID:87+rjU0AM
>>771
https://logicalerror.seesaa.net/article/419701732.html
これか、、、
セキュリティ的に問題有るからダメだな
UcanAccess使わせて貰うかな
2021/04/11(日) 23:09:01.00ID:cqsrtu8s0
>>771
調べました、確かにそうですね
しかし、ODBC-JDBC ブリッジ(TypeI) を削除してしまうなんて私には悪手(の典型)に見えるのですがどうしてそんなことをしたのでしょうか?
775デフォルトの名無しさん (ワッチョイ 7b9c-08FK)
垢版 |
2021/04/11(日) 23:35:21.34ID:/uA8+5nK0
主要なRDBMSはJDBC Type4ドライバーあるからね
もはやODBC-JDBCの役目は終わったってことでしょう
ODBC-JDBCで助かるのはほぼWindowsだけだし(わずかだけどLinuxにもODBCある)
マルチプラットフォーム目指すJavaにとってはODBCは邪魔になったってことよ
2021/04/12(月) 00:41:13.68ID:/ryqMGRo0
>>775
でも、腫瘍じゃない RDBMS とかが新たに出現したとか、マイナーなものがまだまだあるとか、今回のように access に access したいとか、そういうレガシーのために残して置いて「あげよう」とかいうのをバッサリ切るのは、さてどうなんでしょうか?
java は文法は OO としてはかなり保守的なのに、そういうところは荒っぽいのはチグハグな印象を持ちました
2021/04/12(月) 08:57:41.45ID:rGKItn7hM
とにかくUcanAccessが有って良かった
これでmdb横から更新して後は起動すれば起動時の設定でクエリー動かしてレポートまで出力出来る
JDBC-ODBCブリッジは有った方が良いとは思うけどね
778デフォルトの名無しさん (ワッチョイ 7b9c-08FK)
垢版 |
2021/04/12(月) 11:29:16.67ID:uaenDdkP0
マイクロソフトだってmdb捨てたいんだよ
10年以上前からAccessの内部データベースはSQL Serverになっただろ
mdbじゃなければJDBCで読み書きできる
2021/04/12(月) 14:45:18.95ID:45/NLIkcM
>>778
>>マイクロソフトだってmdb捨てたいんだよ
それは理解出来るが帳票ツールとして捨てられないのよ
2021/04/12(月) 16:50:01.78ID:3TTPFD5V0
accessの帳票機能だけ取り出せんもんかと
昔思っとったね。
2021/04/12(月) 16:51:59.93ID:3TTPFD5V0
>>778
>>10年以上前からAccessの内部データベースはSQL Serverになっただろ

詳しく!
782デフォルトの名無しさん (ワッチョイ 0e01-I5oI)
垢版 |
2021/04/12(月) 18:00:35.98ID:zhDyO8uL0
JavaならJasperReportsで良いじゃん
2021/04/12(月) 18:34:37.92ID:45/NLIkcM
>>782
GPLライセンスで常にフリーで使えるなら良いけどね
難しいでしょ
2021/04/17(土) 16:07:35.21ID:qxNSw6WTM
>>777
Jackcessも有るけどね
https://cloud6.net/so/java/1687757
2021/04/18(日) 15:55:49.58ID:H9HZrEaLp
>>784
Jackcessは制限有るからダメだよ
2021/04/18(日) 16:07:59.82ID:T5zTJK1c0
ジェネリクスのワイルドカードについての解説を見ても、どういうことができるのかは分かるんですが、どんなときに使うのかイメージできません。
追加か取り出しのどちらかしかできなかったりするのもそうです。
参考例など教えてもらえませんか?
2021/04/18(日) 17:38:33.29ID:hzO96FxhM
>>786
? extends X はメソッドの引数に使う
? super X はメソッドの戻り値に使う
それだけのこと
C#だとそのままズバリinとoutと書くので圧倒的に分かりやすいんだけどね
788デフォルトの名無しさん (ワッチョイ 9f61-pvza)
垢版 |
2021/04/18(日) 18:55:46.68ID:3NiNUoOU0
引数戻り値というより、メソッドの中でどういう使い方するか、ってこと。
List<? extends X> list であれば、このlistから取り出して何かする。
for(X x: list) { x.x_method();}
List<? super X> list であれば、このlistに突っ込む処理をする。
list.append(x) // xはXかその派生クラスでなければならない。
2021/04/19(月) 12:05:40.16ID:mYeRQ9om0
こういうスレって>787みたいな知ったかの阿呆が回答側にいるからダメなんだよな
2021/04/19(月) 12:23:10.84ID:6aAoraTFM
>>789
お前の方が有害だわ
2021/04/19(月) 12:44:35.25ID:ssZtrIutM
> List<? super X> list
これ、メソッドの中だとList<Object>と実質変わらんわけで、何の意味もないんだよ
他の総称型を使ったクラスやメソッドに渡るときに初めて意味があって、それは>>787の通り
792デフォルトの名無しさん (ワッチョイ 9f61-pvza)
垢版 |
2021/04/19(月) 13:41:10.27ID:N8t4Nfz+0
「実質」ってなんだ?
少なくともコンパイルの時点では違うだろ。
バイトコードの話なら、そもそもワイルドカード以前の問題だし。
793デフォルトの名無しさん (ワキゲー MM4f-woIF)
垢版 |
2021/04/22(木) 12:34:30.91ID:Y9XnOAWKM
OSはLINUXの64ビットで、JAVAプログラムを32ビットで作成する場合、
JDK、JREは32ビットを使わないとだめ?
794デフォルトの名無しさん (ワッチョイ b79c-kFzn)
垢版 |
2021/04/22(木) 13:42:18.11ID:zxsKiFfb0
Javaプログラム(jar)には32ビット/64ビットという違いはないよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況