タグ付けされた質問 「java」

Javaは人気のある高水準プログラミング言語です。言語自体の使用または理解に問題がある場合は、このタグを使用してください。このタグが単独で使用されることはめったになく、[spring]、[spring-boot]、[jakarta-ee]、[android]、[javafx]、[gradle]、および[maven]と組み合わせて使用​​されることがほとんどです。

11
OutOfMemoryErrorをスローするのに十分なメモリがない場合はどうなりますか?
すべてのオブジェクトがヒープメモリを必要とし、スタック上のすべてのプリミティブ/リファレンスがスタックメモリを必要とすることを知っています。 ヒープ上にオブジェクトを作成しようとしたときにメモリ不足が発生すると、JVMはヒープ上にjava.lang.OutOfMemoryErrorを作成し、それをスローします。 つまり、暗黙的に、これは起動時にJVMによって予約されたメモリがあることを意味します。 この予約メモリが使い果たされるとどうなるでしょう(間違いなく使い果たされます。以下の説明をお読みください)。java.lang.OutOfMemoryErrorのインスタンスを作成するのに十分なメモリがJVMにヒープにない場合はどうなりますか? ぶら下がっているだけですか?または、OOMのインスタンスにnullメモリがないため、彼は私を投げますnewか? try { Object o = new Object(); // and operations which require memory (well.. that's like everything) } catch (java.lang.OutOfMemoryError e) { // JVM had insufficient memory to create an instance of java.lang.OutOfMemoryError to throw to us // what next? hangs here, stuck forever? // …

16
Javaで特定のクラスのすべてのサブクラスをどのように見つけますか?
どのようにしてJavaで特定のクラスのすべてのサブクラス(または特定のインターフェースのすべての実装者)を見つけようとしますか?今のところ、私はこれを行う方法を持っていますが、(控えめに言っても)それは非常に非効率的です。メソッドは次のとおりです。 クラスパスに存在するすべてのクラス名のリストを取得します 各クラスをロードして、目的のクラスまたはインターフェースのサブクラスまたはインプリメンターであるかどうかをテストします。 Eclipseには、タイプ階層と呼ばれる優れた機能があり、これを非常に効率的に表示できます。どのようにしてプログラムでそれを行うのですか?

16
log4jでは、ログを記録する前にisDebugEnabledをチェックするとパフォーマンスが向上しますか?
ロギング用のアプリケーションでLog4Jを使用しています。以前は次のようなデバッグ呼び出しを使用していました: オプション1: logger.debug("some debug text"); しかし、いくつかのリンクは、isDebugEnabled()次のように、最初に確認することをお勧めします。 オプション2: boolean debugEnabled = logger.isDebugEnabled(); if (debugEnabled) { logger.debug("some debug text"); } だから私の質問は「オプション2は何らかの方法でパフォーマンスを向上させますか?」です。 いずれにしても、Log4JフレームワークはdebugEnabledに対して同じチェックを行うためです。オプション2の場合、フレームワークがisDebugEnabled()メソッドを複数回(呼び出しごとに)呼び出す必要がない、単一のメソッドまたはクラスで複数のデバッグステートメントを使用している場合に役立つことがあります。この場合、isDebugEnabled()メソッドを1回だけ呼び出します。Log4Jがデバッグレベルに設定されている場合、実際にはisDebugEnabled()メソッドを2回呼び出します。 debugEnabled変数に値を割り当てる場合、および 実際にはlogger.debug()メソッドによって呼び出されます。 私たちは、複数書く場合とは思わないlogger.debug()メソッドやクラスで声明をして呼び出すdebug()オプション1に記載の方法をので、それはオプション2と比較してLog4JのフレームワークのためのオーバーヘッドであるisDebugEnabled()ことは、(コードの面で)非常に小さい方法であるかもしれませんインライン化の良い候補になる。
207 java  logging  log4j 

9
Spring Bootは2つのデータソースを構成して使用します
2つのデータソースを構成して使用するにはどうすればよいですか? たとえば、ここに私が最初のデータソースのために持っているものがあります: application.properties #first db spring.datasource.url = [url] spring.datasource.username = [username] spring.datasource.password = [password] spring.datasource.driverClassName = oracle.jdbc.OracleDriver #second db ... アプリケーションクラス @SpringBootApplication public class SampleApplication { public static void main(String[] args) { SpringApplication.run(SampleApplication.class, args); } } application.properties別のデータソースを追加するように変更するにはどうすればよいですか?別のリポジトリで使用されるように自動配線するにはどうすればよいですか?


11
JARファイルを実行する方法
次のようなJARファイルを作成しました。 jar cf Predit.jar *.* このJARファイルをダブルクリックして実行しました(機能しませんでした)。したがって、DOSプロンプトから次のように実行しました。 java -jar Predit.jar 「Failed to load main class」例外が発生しました。だから私はこのJARファイルを抽出しました: jar -xf Predit.jar そして私はクラスファイルを実行しました: java Predit うまくいきました。JARファイルが機能しなかった理由がわかりません。JARファイルを実行する手順を教えてください
207 java  jar 

23
IntelliJ IDEA with Junit 4.7“ !!! JUnitバージョン3.8以降が必要です:」
IntelliJ IDEAで次のテストを実行しようとすると、メッセージが表示されます。 「!!! JUnitバージョン3.8以降が必要です:」 これはIntelliJ IDEA 9で取り組んでいるAndroidプロジェクトであることに注意してください。 public class GameScoreUtilTest { @Test public void testCalculateResults() throws Exception { final Game game = new Game(); final Player player1 = new Player(); { final PlayedHole playedHole = new PlayedHole(); playedHole.setScore(1); game.getHoleScoreMap().put(player1, playedHole); } { final PlayedHole playedHole = new PlayedHole(); playedHole.setScore(3); game.getHoleScoreMap().put(player1, …

14
GMail、Yahoo、Hotmailを使用してJavaアプリケーションでメールを送信するにはどうすればよいですか?
GMailアカウントを使用してJavaアプリケーションからメールを送信することはできますか?会社のメールサーバーでJavaアプリを使用してメールを送信するように設定しましたが、アプリケーションを配布しても、メールサーバーは切断されません。Hotmail、Yahoo、GMailのいずれかを使用した回答は許容されます。

8
`Optional.orElse()`と `Optional.orElseGet()`の違い
Optional<T>.orElse()とOptional<T>.orElseGet()メソッドの違いを理解しようとしています。 orElse()メソッドの説明は、「存在する場合は値を返し、それ以外の場合は返す」です。 一方、orElseGet()メソッドの説明は、「存在する場合は値を返し、それ以外の場合は他を呼び出して、その呼び出しの結果を返す」です。 このorElseGet()メソッドは、基本的にパラメーターをとらずにを返すサプライヤー機能インターフェースを取りますT。 どの状況で使用する必要がありますorElseGet()か?あなたは、メソッドを持っている場合はT myDefault()、あなただけはしないだろう理由optional.orElse(myDefault())ではなくoptional.orElseGet(() -> myDefault())? orElseGet()ラムダ式の実行を後で延期しているようには見えないので、それの意味は何ですか?(私はそれがより安全に返された場合、それはより有用であろうと思っているだろうOptional<T>そのget()投げたことがないNoSuchElementExceptionとisPresent()常にtrueを返します...しかし、明らかにそのない、それだけを返すTようにorElse())。 私が見逃している他の違いはありますか?
206 java  java-8  optional 

7
IntelliJ IDEAのアプリケーション実行プロファイルのクラスパスにディレクトリを追加する方法
アプリケーション実行プロファイルのクラスパスにディレクトリを追加しようとしています VM設定で-cp x:target / classesを使用してオーバーライドすると、次のエラーが発生します。 java.lang.NoClassDefFoundError: com/intellij/rt/execution/application/AppMain プロジェクトのクラスパスにディレクトリを追加する方法に関するアイデアはありますか?

7
for-eachループとイテレーターのどちらがより効率的ですか?
コレクションをトラバースする最も効率的な方法はどれですか。 List<Integer> a = new ArrayList<Integer>(); for (Integer integer : a) { integer.toString(); } または List<Integer> a = new ArrayList<Integer>(); for (Iterator iterator = a.iterator(); iterator.hasNext();) { Integer integer = (Integer) iterator.next(); integer.toString(); } これはthis、this、this、またはthisの完全な複製ではありませんが、最後の質問に対する答えの1つが近くなりました。これがだまされない理由は、これらのほとんどがget(i)反復子を使用するのではなく、ループ内で呼び出すループを比較しているためです。 メタで示唆されているように、私はこの質問に対する私の答えを投稿します。

25
ロガーのメッセージでJUnitアサートを行う方法
Javaロガーを呼び出してそのステータスを報告するテスト対象のコードがあります。JUnitテストコードで、このロガーに正しいログエントリが作成されたことを確認します。次の行に沿って何か: methodUnderTest(bool x){ if(x) logger.info("x happened") } @Test tester(){ // perhaps setup a logger first. methodUnderTest(true); assertXXXXXX(loggedLevel(),Level.INFO); } これは特別に調整されたロガー(またはハンドラー、フォーマッター)を使用して実行できると思いますが、既存のソリューションを再利用したいと思います。(そして、正直に言うと、ロガーからlogRecordにアクセスする方法はわかりませんが、それが可能であると想定してください。)
206 java  logging  junit  assert 

5
どうしてもこのJavaプログラムが終了すべきではない(そしてそうでなかった)にもかかわらず終了するのはなぜですか?
今日の私の研究室での敏感な操作は完全に間違っていました。電子顕微鏡のアクチュエーターはその境界を越え、一連の出来事の後に私は1200万ドルの機器を失いました。障害のあるモジュールの40K行以上を次のように絞り込みました。 import java.util.*; class A { static Point currentPos = new Point(1,2); static class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; } } public static void main(String[] args) { new Thread() { void f(Point p) { synchronized(this) {} if (p.x+1 …

7
Javaジェネリックにはいつ<が必要ですか?<T>の代わりにT>を拡張し、切り替えの欠点はありますか?
次の例があるとします(JUnitとHamcrestマッチャーを使用)。 Map&lt;String, Class&lt;? extends Serializable&gt;&gt; expected = null; Map&lt;String, Class&lt;java.util.Date&gt;&gt; result = null; assertThat(result, is(expected)); これは、以下のJUnit assertThatメソッドシグネチャでコンパイルされません。 public static &lt;T&gt; void assertThat(T actual, Matcher&lt;T&gt; matcher) コンパイラのエラーメッセージは次のとおりです。 Error:Error:line (102)cannot find symbol method assertThat(java.util.Map&lt;java.lang.String,java.lang.Class&lt;java.util.Date&gt;&gt;, org.hamcrest.Matcher&lt;java.util.Map&lt;java.lang.String,java.lang.Class &lt;? extends java.io.Serializable&gt;&gt;&gt;) ただし、assertThatメソッドシグネチャを次のように変更した場合: public static &lt;T&gt; void assertThat(T result, Matcher&lt;? extends T&gt; matcher) その後、コンパイルが機能します。 したがって、3つの質問: 現在のバージョンが正確にコンパイルされないのはなぜですか?ここでは共分散の問題を漠然と理解していますが、説明が必要な場合は、説明できませんでした。 …
205 java  generics  junit 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.