問題タブ [java-15]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
307 参照

java - Java Text Blocks: インデント接頭辞内のタブとスペースの混合

Java 15で導入された(非プレビュー) テキスト ブロック機能。行から共通の空白プレフィックスを削除することにより、コードのインデントを壊さずに複数行の文字列リテラルを定義できます。アルゴリズムはJEP 378で説明されています。

しかし、タブとスペースの組み合わせを使用して行がインデントされている場合、「共通の空白プレフィックス」はどのように正確に定義されていますか?

たとえば、次の場合 (·はスペース、タブ文字を意味します)の場合、文字列値はどうなりますか?

OpenJDK を使用した簡単なテストでは、結果の文字列は次のようになります。

したがって、Javac はスペースやタブを含む空白記号をカウントし、そのカウントを使用するように見えます — スペース (0x20) とタブ (0x09) を同等に扱います。これは予想される動作ですか?


補足: これは純粋に理論的な問題ではありません。スペース/タブが混在するインデントと大きなコードベースを持つプロジェクトにとって実用的に重要です。

0 投票する
0 に答える
135 参照

java - Eclipse でのジェネリックとのシーリング インターフェイス

以下は合法であり(つまり、コンパイルできます)、プレビュー機能が有効になっているJava 15で動作します(Eclipse 2020-09で)

ただし、日食はQuantity.javaat で不平を言ってい... permits QuantityImplます。カーソルを合わせると、次のように表示されQuantityImplます。

これは、コンパイルされたとしても、有効な苦情ですか、それとも日食のバグですか?

0 投票する
0 に答える
2201 参照

spring - ブート層 java.lang.module.FindException の初期化中にエラーが発生しました: モジュール jdk.management.agent が見つかりません

Eclipse > New > Spring-Starter project を使用して最初の Spring Boot アプリケーションをセットアップしています。プロジェクト ファイルが表示され、コンパイルされています。RunAs > Java プロジェクトをコンソール出力で実行することもできます。RunAs > Spring Bootを選択すると、コンソールに上記のエラーが表示されます。

  1. 私の Java バージョンは Java15 であり、Eclipse について > インストールの詳細 > 構成で同じパスが Eclipse によって使用されていることも確認しました。 -vm C:\Program Files\Java\jdk-15.0.1\bin\server\jvm.dll
  2. 実行すると、コマンド ライン出力に表示されるリストjava --list-modulesmanagement.agentモジュールが表示されます。

インストールされている Maven のバージョンは 3.3.6 です

何が欠けているのかわかりません。何か案は?

0 投票する
1 に答える
823 参照

java - コンパイラ オプション --add-exports を使用して Maven をコンパイルする

最終的に Java 15 に切り替えたところ、古いコードがコンパイルされなくなっていることがわかりました。パッケージsun.jvmstat.monitorとクラスのクラスLocalVmManagerを使用して、システムで実行されているすべての JVM の pid を取得します。これは Java8 で動作しますが、Java15 では動作しません (Java9 以降は動作しないと思います)。

IntelliJ のおかげで、次のオプションを に渡す必要があることがわかりましたjavac--add-exports jdk.internal.jvmstat/sun.jvmstat.perfdata.monitor.protocol.local=ALL-UNNAMED --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED --add-exports jdk.internal.jvmstat/sun.jvmstat.monitor.event=ALL-UNNAMED

実際、このオプションを使用すると、コマンドラインからコンパイルできます。しかし、私はアプリケーションを .xml 経由でコンパイルしたいとも思っていましたmvn compilepom.xml でコンパイラにオプションを指定するにはどうすればよいですか?

運が悪かったので、次のことを試しました:

それまでの間、コードを変更し、ディレクトリをスキャンして実行中の JVM の pid を読み取ります/proc/