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

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


4
コマンドラインからソースを使用してMavenアーティファクトをインストールする方法は?
ソースと一緒にMavenアーティファクトをインストールする方法は? したがって、後でコードを表示するためにEclipseでプロジェクトを開く必要はありません。 編集: 私はこのコードをpom.xmlに追加できることを知っています <plugin> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <phase>verify</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> しかし、私はそれをコマンドラインから実行したいと思います(より普遍的にするため)
92 java  eclipse  maven 

7
Androidでの列挙型の使用は厳密に避けるべきですか?
Bundle以下のようなインターフェースで、キーのような関連する定数のセットを一緒に定義するために使用しました: public interface From{ String LOGIN_SCREEN = "LoginSCreen"; String NOTIFICATION = "Notification"; String WIDGET = "widget"; } これにより、関連する定数をグループ化し、静的なインポート(実装ではない)を使用してそれらを使用するより良い方法が得られます。私が知っているAndroidフレームワークはまた、のような同じように定数を使用していますToast.LENTH_LONG、View.GONE。 しかし、私はしばしばJava Enums、定数を表すためのはるかに優れた強力な方法を提供していると感じています。 しかし、での使用enumsにパフォーマンスの問題はありAndroidますか? 少し調べただけで混乱してしまいました。この質問から、 「Aint Enums Where You Only Ints Needs」がAndroidのパフォーマンスのヒントから削除されましたか?「Avoid enums」がパフォーマンスのヒントからGoogle削除されたことは明らかですが、公式のトレーニングドキュメントからメモリオーバーヘッドセクションに注意してください:「列挙型多くの場合、静的定数の2倍以上のメモリが必要です。Androidでの列挙型の使用は厳密に避けてください。」これはまだ有効ですか?(1.6以降のバージョンなど)Java 私が観察したもう1つの問題は、シリアル化して送信する必要があることenumsをintents使用しBundleて送信することです(つまりputSerializable()、プリミティブputString()メソッドに比べて高価な操作だと思いますが、enums無料で提供しています)。 誰かが同じものを表現するのに最適な方法を明確にできますかAndroid?私は厳密には使用しないでくださいenumsにAndroid?
92 java  android  enums 

6
CountDownLatchとセマフォ
使用する利点はありますか java.util.concurrent.CountdownLatch の代わりに java.util.concurrent.Semaphore? 私の知る限り、次のフラグメントはほぼ同等です。 1.セマフォ final Semaphore sem = new Semaphore(0); for (int i = 0; i < num_threads; ++ i) { Thread t = new Thread() { public void run() { try { doStuff(); } finally { sem.release(); } } }; t.start(); } sem.acquire(num_threads); 2:CountDownLatch final CountDownLatch latch …

13
java.lang.UnsatisfiedLinkErrorいいえjava.library.pathに*****。dll
Webアプリケーションにカスタムdllファイルをロードするにはどうすればよいですか?私は以下を試しました: system32フォルダー内のすべての必要なDLLをコピーし、それらの1つをServletコンストラクターにロードしようとしましたSystem.loadLibrary とに必要なdllをコピーtomcat_home/shared/libしましたtomcat_home/common/lib これらのDLLはすべてWEB-INF/libWebアプリケーション内にあります

8
AARをJARに変換する方法
状況: Javaライブラリーを使用するつもりで、MavenリポジトリーからのAARファイルしか持っていないが、JARファイルが必要です。 背景ストーリー: ライブラリをコンパイルしようとしましたが、そのGradle構造が不安定でした。そのため、コンパイル済みのjarファイルを要求すると、その開発者はいくつかのMavenリポジトリーからaarファイルを手渡しました(開発者は自分のプロジェクトをコンパイルできませんでした)。Gradleの設定は混乱しており、複数のライブラリに依存しており、Gradleはいくつかの例外をスローしました。 IDEA IDEで使用しようとしましたが、表示されませんでした。ライブラリプロジェクトはjarファイルにコンパイルできるはずですよね? 質問: そのAARファイルをJARファイルに変換するにはどうすればよいですか?
92 java  jar  aar 

8
スレッドからの戻り値
私はHandlerThread。内部で値が変更され、Threadそれをtest()メソッドに返したいのですが。これを行う方法はありますか? public void test() { Thread uiThread = new HandlerThread("UIHandler"){ public synchronized void run(){ int value; value = 2; //To be returned to test() } }; uiThread.start(); }

8
Javaで有効なURLを確認するにはどうすればよいですか?
URLがJavaで有効かどうかを確認する最良の方法は何ですか? を呼び出しnew URL(urlString)てキャッチしようとした場合は、MalformedURLExceptionで始まるすべてに満足しているようhttp://です。 私は接続の確立については心配していません。有効性についてだけです。これには方法がありますか?Hibernate Validatorの注釈?正規表現を使用する必要がありますか? 編集: 受け入れられるURLの例にはhttp://***、およびがありhttp://my favorite site!ます。
92 java  validation  url 

12
ゲッター、セッター、プロパティのベストプラクティス。JavaとC#
私は今C#クラスを取得しており、最善の方法を見つけようとしています。私はJavaの出身なので、Javaのベストプラクティスにのみ精通しています。私はC#初心者です! Javaでは、プライベートプロパティがある場合はこれを行います。 private String name; public void setName(String name) { this.name = name; } public String getName() { return this.name; } C#では、これを行うには多くの方法があることがわかります。 私はJavaのようにそれを行うことができます: private string name; public void setName(string name) { this.name = name; } public string getName() { return this.name; } または私はこのようにそれを行うことができます: private string name; public string Name { …

7
静的メソッドの代わりにシングルトンを使用するのはなぜですか?
ヘルパー/ユーティリティクラスに関するこれらの簡単な質問に対する良い答えを見つけたことはありません。 静的メソッドを使用する代わりにシングルトン(ステートレス)を作成するのはなぜですか? オブジェクトに状態がない場合、オブジェクトインスタンスが必要になるのはなぜですか?

14
Windowsでの信頼できるFile.renameTo()代替?
Java File.renameTo()は、特にWindowsでは問題があるようです。APIドキュメントと言い、 このメソッドの動作の多くの側面は、本質的にプラットフォームに依存します。名前変更操作は、あるファイルシステムから別のファイルシステムにファイルを移動できない場合があり、アトミックでない場合があり、宛先の抽象パス名を持つファイルがある場合、成功しない場合があります。もう存在している。名前の変更操作が成功したことを確認するために、常に戻り値を確認する必要があります。 私の場合、アップグレード手順の一部として、ギガバイトのデータ(さまざまなサイズのサブディレクトリとファイル)を含む可能性のあるディレクトリを移動(名前変更)する必要があります。移動は常に同じパーティション/ドライブ内で行われるため、ディスク上のすべてのファイルを物理的に移動する必要はありません。 そこにはならない移動するディレクトリの内容に任意のファイルのロックも、それでも、かなり頻繁に、renameTo()は、その仕事とはfalseを返しますを行うには失敗しました。(Windowsでは、おそらくいくつかのファイルロックがいくらか勝手に期限切れになると思います。) 現在、私はコピーと削除を使用するフォールバックメソッドを持っていますが、フォルダーのサイズによっては時間がかかることがあるため、これは面倒です。また、ユーザーがフォルダーを手動で移動して、何時間も待たないようにすることができるという事実を単に文書化することも検討しています。しかし、正しい方法は明らかに自動的かつ迅速なものになります。 だから私の質問は、Windows上のJavaで、単純なJDKまたはいくつかの外部ライブラリを使ってすばやく移動/名前を変更するための代替の信頼できるアプローチを知っていますか?または、特定のフォルダーとそのすべてのコンテンツ(おそらく数千の個別ファイル)のファイルロックを検出して解放する簡単な方法を知っている場合も、それで問題ありません。 編集:この特定のケースでは、renameTo()さらにいくつかのことを考慮に入れるだけで、使用をやめたようです。この回答を参照してください。
92 java  windows  file  file-io 

12
I / Oを試行せずに、ピアがTCPソケットを正常に閉じたことを検出できないのはなぜですか?
最近の質問のフォローアップとして、TCPソケットの読み取り/書き込みを試みない限り、ソケットがピアによって正常に閉じられていることを検出することがJavaで不可能である理由は何ですか?これは、かどうかに関係なく1回の使用前NIOの場合であるように思わSocketまたはNIO SocketChannel。 ピアがTCP接続を適切に閉じると、接続の両側のTCPスタックはその事実を認識します。サーバー側(シャットダウンを開始する側)は状態FIN_WAIT2になり、クライアント側(シャットダウンに明示的に応答しない側)は状態になりCLOSE_WAITます。なぜそこに方法はないSocketかSocketChannelという、基礎となるTCP接続が終了したかどうかを確認するためにTCPスタックを照会することができますか?TCPスタックがそのようなステータス情報を提供しないのですか?それとも、コストのかかるカーネルの呼び出しを回避するという設計上の決定でしょうか。 この質問に対するいくつかの回答を既に投稿したユーザーの助けを借りて、問題の原因がどこにあるのかがわかります。接続を明示的に閉じない側はTCP状態になりCLOSE_WAIT、接続はシャットダウンの処理中であり、側が独自のCLOSE操作を発行するのを待ちます。私はisConnected戻っtrueてisClosed戻ってくるのは十分に公正だと思いますfalseが、なぜそんなものがないのisClosingですか? 以下は、NIO以前のソケットを使用するテストクラスです。しかし、NIOを使用しても同じ結果が得られます。 import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) throws Exception { final ServerSocket ss = new ServerSocket(12345); final Socket cs = ss.accept(); System.out.println("Accepted connection"); Thread.sleep(5000); cs.close(); System.out.println("Closed connection"); ss.close(); Thread.sleep(100000); } } import java.net.Socket; public class MyClient { public static …

2
Javaプロジェクトの浮浪者:VMまたはホストのどちらでコンパイルする必要がありますか?
ここに質問があります:Javaプロジェクト(またはそのためにコンパイルされた言語プロジェクト)にVagrantを使用する場合、VMまたはホストでコンパイルする必要がありますか?また、IDEとすべての開発ツールをVM内から実行したり、ホスト上で実行したりしますか? Java IDEとコンパイル/デプロイプロセスがVagrant VMでどのように機能するかは、あまり明確に定義されていないようです。一般に、私の印象は、コードがホスト上で編集され、VMで実行されることです。これは、コンパイルされていない言語に最適です。Stackoverflowに関する他の回答は、追加のコンパイル手順のために、Vagrantはコンパイル済み言語にはあまり役に立たないことを示唆していますが、何ができるかをまだ知りたいです。 私がすでに考えてきたいくつかのこと: VMでコンパイルする理由 ホストでコンパイルする場合、javaはインストールするもう1つのソフトウェアです ホストでコンパイルする場合は、ホストのJavaバージョンをVMのバージョンと手動で最新に保つ必要があります ホスト上の対応するJavaバージョンが使用できない可能性があります(たとえば、Macの場合) VMにIDEがある理由 環境とIDE間の緊密な統合、ショートカットを使用してアプリケーションを実行できます リモートデバッグなしでJavaアプリケーションのデバッガーを接続できます(1ステップの実行/デバッグ) ホストでコンパイルする理由 コンパイル時間の短縮 VMを可能な限り本番環境に近づけたい ホストにIDEがある理由 ホストでコードを編集し、VMで実行するのは怠惰な規則です UIパフォーマンスの向上(X転送とVNCが遅い) あなたの考えは何ですか:私はVMまたはホストの内部からIDEを実行する必要がありますか?VMまたはホストの内部からコンパイルする必要がありますか?
92 java  vagrant 

5
JDBC ResultSetから列数を取得する方法は?
私はCsvJdbc(csv-filesのJDBCドライバーです)を使用してcsv-fileにアクセスしています。csvファイルに含まれる列の数がわかりません。列の数を取得するにはどうすればよいですか?このためのJDBC関数はありますか?このためのメソッドがjava.sql.ResultSetに見つかりません。 ファイルへのアクセスには、CsvJdbc Webサイトの例と同様のコードを使用します。
92 java  jdbc  csv  resultset 

6
HashMap Java 8の実装
次のリンクドキュメントに従って:Java HashMap実装 の実装HashMap(またはの拡張HashMap)と混同しています。私の質問は: まず static final int TREEIFY_THRESHOLD = 8; static final int UNTREEIFY_THRESHOLD = 6; static final int MIN_TREEIFY_CAPACITY = 64; これらの定数はなぜ、どのように使用されますか?これについて明確な例をいくつか挙げたい。 彼らはこれでどのようにパフォーマンスの向上を達成していますか? 第二に のソースコードがHashMapJDKにある場合、次の静的内部クラスが見つかります。 static final class TreeNode<K, V> extends java.util.LinkedHashMap.Entry<K, V> { HashMap.TreeNode<K, V> parent; HashMap.TreeNode<K, V> left; HashMap.TreeNode<K, V> right; HashMap.TreeNode<K, V> prev; boolean red; TreeNode(int …

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