最新記事

application.properties でログレベルを設定するにはどうすればいいですか? 質問する
java
spring
spring-boot
logging
log-level

application.properties でログレベルを設定するにはどうすればいいですか? 質問する

これは非常に単純な質問ですが、情報が見つかりません。(おそらく、Java フレームワークに関する私の知識が著しく不足しているのでしょう。) application.properties を使用してログ レベルを設定するにはどうすればよいでしょうか。また、ログ ファイルの場所などはどうすればよいですか。

Admin

Why doesn't Java offer operator overloading? Ask Question
java
operator-overloading

Why doesn't Java offer operator overloading? Ask Question

Coming from C++ to Java, the obvious unanswered question is why didn't Java include operator overloading? Isn't Complex a, b, c; a = b + c; much simpler than Complex a, b, c; a = b.add(c);? Is there a known reason for this, valid arguments for not allowing operator overloading? Is the reason arbitrary, or lost to time?

Admin

Java クラス ファイル形式のメジャー バージョン番号のリスト? 質問する
java
version

Java クラス ファイル形式のメジャー バージョン番号のリスト? 質問する

別の投稿で、Java のメジャー バージョン番号のリストを見ました。 ジャワ メジャーバージョン 22 66 21 65 20 64 19 63 18 62 17 61 16 60 15 59 14 58 13 57 12 56 11 55 10 54 9 53 8 52 7 51 6 50 5 49 1.4 48 1.3 47 1.2 46 1.1 45 1.0.2 45 このリストはどこから来たのでしょうか? これに関する特定の参照はありますか? できればマイナー バージョンも表示されるものがあればいいのですが。

Admin

Java/Maven で「Xerces 地獄」に対処するには? 質問する
java
maven
classloader
dependency-management
xerces

Java/Maven で「Xerces 地獄」に対処するには? 質問する

私のオフィスでは、Xerces という言葉を口にするだけで、開発者から殺意に満ちた怒りがわき起こります。SO の他の Xerces の質問をざっと見たところ、Maven ユーザーのほとんど全員が、この問題に一度は「悩まされている」ようです。残念ながら、この問題を理解するには、Xerces の歴史に関する知識が少し必要です... 歴史 Xerces は、Java エコシステムで最も広く使用されている XML パーサーです。Java で記述されたほぼすべてのライブラリまたはフレームワークは、何らかの形で (直接ではないにしても、推移的に) Xerces を使用しています。 Xercesの瓶は、公式バイナリ現在に至るまで、バージョン管理されていません。たとえば、Xerces 2.11.0 実装 jar はxercesImpl.jarではなく という名前ですxercesImpl-2.11.0.jar。 XercesチームMavenを使用しないつまり、公式リリースをアップロードしないということですメイヴンセントラル。 ゼクセスはかつて単一の瓶として放出される( xerces.jar) でしたが、2 つの jar に分割され、1 つには API ( xml-apis.jar) が含まれ、もう 1 つにはそれらの API の実装 ( xercesImpl.jar) が含まれます。多くの古い Maven POM は、依然として への依存関係を宣言していますxerces.jar。過去のある時点で、Xerces も としてリリースされましたがxmlParserAPIs.jar、一部の古い POM もこれに依存しています。 Maven リポジトリに xml-apis と xercesImpl の jar をデプロイする人によって割り当てられるバージョンは、多くの場合異なります。たとえば、どちらも Xerces 2.8.0 からのものであるにもかかわらず、xml-apis にはバージョン 1.3.03 が、xercesImpl にはバージョン 2.8.0 が与えられることがあります。これは、xml-apis の jar に、それが実装する仕様のバージョンをタグ付けすることが多いためです。この詳細について、非常にわかりやすい、しかし不完全な内訳があります。ここ。 問題を複雑にしているのは、Xerces が、JRE に含まれる Java API for XML Processing (JAXP) のリファレンス実装で使用される XML パーサーであることです。実装クラスは名前空間で再パッケージ化されるcom.sun.*ため、一部の JRE では利用できない可能性があるため、直接アクセスするのは危険です。ただし、Xerces のすべての機能がjava.*およびjavax.*API 経由で公開されるわけではありません。たとえば、Xerces のシリアル化を公開する API はありません。 混乱をさらに複雑にしているのは、ほとんどすべてのサーブレット コンテナー (JBoss、Jetty、Glassfish、Tomcat など) の 1 つ以上の/libフォルダーに Xerces が同梱されていることです。 問題点 紛争解決 上記の理由の一部 (あるいはすべて) により、多くの組織は POM で Xerces のカスタム ビルドを公開して使用しています。これは、小さなアプリケーションがあり、Maven Central のみを使用している場合はそれほど問題にはなりませんが、Artifactory または Nexus が複数のリポジトリ (JBoss、Hibernate など) をプロキシしているエンタープライズ ソフトウェアの場合はすぐに問題になります。 たとえば、組織 A はxml-apis次のように公開する場合があります。 org.apache.xerces xml-apis 2.9.1 一方、組織 B は次jarのように同じことを公開する可能性があります。 xml-apis xml-apis 1.3.04 B のjarバージョンは A のバージョンよりも低いですがjar、 が異なるため、Maven はこれらが同じ成果物であることを認識しませんgroupId。したがって、競合解決を実行できず、両方jarの が解決済みの依存関係として含まれます。 クラスローダー地獄 前述のように、JRE は JAXP RI で Xerces とともに出荷されます。すべての Xerces Maven 依存関係を または としてマークするのが望ましいですが依存するサードパーティ コードは、使用している JDK の JAXP で提供されているバージョンで動作する場合と動作しない場合があります。さらに、サーブレット コンテナーで出荷される Xerces jar に対処する必要があります。これにより、いくつかの選択肢が残ります。サーブレット バージョンを削除して、コンテナーが JAXP バージョンで実行されることを期待しますか? サーブレット バージョンを残して、アプリケーション フレームワークがサーブレット バージョンで実行されることを期待する方がよいでしょうか? 上で概説した未解決の競合の 1 つまたは 2 つが製品に紛れ込むと (大規模な組織では簡単に発生します)、すぐにクラスローダー地獄に陥り、クラスローダーが実行時にどのバージョンの Xerces を選択しているのか、Windows と Linux で同じ jar を選択するかどうか (おそらくそうではない) が疑問になります。 解決策は? すべての Xerces Maven 依存関係をまたは としてマークしようとしましたが、成果物に多数のエイリアス ( xml-apis、xerces、xercesImpl、xmlParserAPIsなど) があるため、これを強制するのは困難です (特に大規模なチームの場合)。さらに、サードパーティのライブラリ/フレームワークは、JAXP バージョンまたはサーブレット コンテナによって提供されるバージョンでは実行されない可能性があります。 Maven でこの問題に最も効果的に対処するにはどうすればよいですか? 依存関係を細かく制御し、階層化されたクラスローディングに頼る必要がありますか? すべての Xerces 依存関係をグローバルに除外し、すべてのフレームワーク/ライブラリで JAXP バージョンを使用するように強制する方法はありますか? 更新: Joshua SpiewakがXercesビルドスクリプトのパッチ版をアップロードしました。ゼレセJ-1454Maven Central へのアップロードが可能になります。この問題に投票/監視/貢献して、この問題を完全に解決しましょう。

Admin

Maven の pom.xml の pluginManagement とは何ですか? 質問する
java
maven
build
pom.xml
maven-dependency-plugin

Maven の pom.xml の pluginManagement とは何ですか? 質問する

これは私の pom ファイルの一部です。 ... org.apache.maven.plugins maven-dependency-plugin 2.4 install copy-dependencies ...... ... 私はコマンドでそれをうまく使います mvn install しかし、これを「pluginManagement」タグで囲もうとすると、目標maven-dependency-pluginを起動したときに動作が停止しますinstall。「pluginManagement」タグによってビルドの動作が変わるのはなぜでしょうか。それとも、別の目標またはオプションを使用する必要があるのでしょうか。

Admin

実行時に JAR ファイルを動的にロードするにはどうすればいいですか? 質問する
java
jar
classloader

実行時に JAR ファイルを動的にロードするにはどうすればいいですか? 質問する

Java でこれを行うのはなぜ難しいのでしょうか。何らかのモジュール システムを使用する場合は、JAR ファイルを動的にロードできる必要があります。独自の を作成することでこれを行う方法があると聞きましたClassLoaderが、(少なくとも私にとっては) JAR ファイルを引数としてメソッドを呼び出すのと同じくらい簡単なはずの作業に対して、それは大変な作業です。 これを実行する簡単なコードの提案はありますか?

Admin

Mockito を使用してジェネリックパラメータを持つクラスをモックする 質問する
java
generics
mockito

Mockito を使用してジェネリックパラメータを持つクラスをモックする 質問する

Fooジェネリック パラメータを使用してクラスをモックするクリーンな方法はありますか?を期待するメソッドに渡す必要があるクラスをモックする必要があるとしますFoo。次のように簡単に実行できます。 Foo mockFoo = mock(Foo.class); when(mockFoo.getValue).thenReturn(new Bar()); getValue()はジェネリック型 を返すと仮定しますT。しかし、後で を期待するメソッドに渡すと、問題が生じますFoo。キャストがこれを行う唯一の方法ですか?

Admin

Java: サブクラス下の列挙型で switch ステートメントを使用する 質問する
java
enums
switch-statement

Java: サブクラス下の列挙型で switch ステートメントを使用する 質問する

まず最初に述べておきますが、私は C# の列挙型にかなり精通していますが、Java の列挙型はかなり混乱しているようです。 ご覧のとおり、次の例では switch ステートメント @ enums を使用しようとしていますが、何をしても常にエラーが発生します。 受け取ったエラーは次のとおりです: 修飾されたケースラベルは、SomeClass.AnotherClass.MyEnum.VALUE_A修飾されていない列挙定数に置き換える必要があります。VALUE_A 問題は、エラーはよく理解しているのですが、列挙型が別のサブクラスにあるため、VALUE_A を記述することができないということです。この問題を解決する方法はありますか? また、Java でなぜこのようなことが起こるのでしょうか? //Main Class public class SomeClass { //Sub-Class public static class AnotherClass { public enum MyEnum { VALUE_A, VALUE_B } public MyEnum myEnum; } public void someMethod() { MyEnum enumExample //... switch (enumExample) { case AnotherClass.MyEnum.VALUE_A: { <-- error on this line //.. break; } } } }

Admin