問題タブ [javac]
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.
java - ANTスクリプトの依存関係の問題
Ant自体を使用したコマンドプロンプトから、Antスクリプトを使用してプロジェクトをビルドする際に問題が発生しました。私のプロジェクトで特定のJavaファイルの特定のインポートを見つけることができません(そのままで5,000近くのソースファイルがあります)。インポートは、Antファイル自体で設定した場所の.jarパッケージに含まれています。奇妙なことに、EclipseのようなIDEを使用して、Antファイルからプロジェクトを問題なくビルドできます。何が間違っている可能性があるのか?ありがとう!
java - そのようなクラスがない場合、ant/javac で「import pack.*」をコンパイルするにはどうすればよいですか?
私の会社では、現在のプロジェクトのコードの最新リビジョンを調べてコンパイルするためのバッチ スクリプトを作成しています。Ant を使用してクラス ファイルを作成していますが、奇妙なエラーが発生しました。ソース ファイルの 1 つは、ファイルが存在しないディレクトリ (フォルダーのみ) から .* をインポートします。実際、必要なフォルダーは直後にインポートされます。
Eclipse では完全に正常にコンパイルされますが、私は Ant スクリプトを使用して IDE の外部で自動化しています。Javac は、この行に遭遇するとエラーをスローします。Antのjavacでこのエラーを無視/抑制するために使用できる自動化された手順はありますか?
インポートディレクトリにダミーファイルを作成することさえできますが、そのすべてがJarファイルに含まれているため、解凍してからダミーファイルで再圧縮する必要はありません。
ant - 「-J-Duser.language」をantを介してjavacに渡し、コンパイルエラーが正しい言語で報告されるようにします
私のPCは現在、テスト目的で日本語に設定されています。Java プロジェクトにコンパイル エラーがある場合、メッセージは日本語で報告されます。
例: 1 つのソース ファイルを [...ディレクトリ...] [...クラス...] にコンパイルすると、.java:172: シンボルが見つかりません。</p>
エラーを英語で表示したいと思います。
ant を使用しない場合、これを修正するには javac -J-Duser.language=en [..java files...] を使用します。これにより、javac は英語のエラー メッセージを表示します (-J は、残りの引数を java に渡すように javac に指示します)。 )
私の質問は次のとおりです。これをantに渡すにはどうすればよいですか[私が試したが機能しなかったオプションを削除するために編集]
java - コンパイルされたJavaクラスでのパラメータ/引数名の保持
私がこのようなものをコンパイルするとき:
これをクラスファイルにコンパイルすると、引数名が失われているようです。つまり、他のJavaコードが参照MyClass
し、呼び出しまたは上書きしたい場合myMethod
、私のIDE(現在はEclipse)はクラスファイルからこのメソッドシグネチャを取得しているようです。
Eclipse(およびおそらく他のIDEも)を使用すると、(Bishibooshが指摘したように)ソースまたはjavadocへのリンクを提供でき、これを利用できることを知ってMyClass
います。javac
しかし、クラスファイルに名前を含めるように指示して、そのクラスのユーザーがクラスファイルしかない場合でも引数名を表示できるようにする方法があるかどうか、興味があります。
クラスのソリューション
を使用してクラスをコンパイルするとjava -g:vars
、パラメーターの名前がクラスファイルに含まれます。-g:vars
Eclipse->プロジェクトプロパティ->Javaコンパイラ->生成されたクラスファイルに変数属性を追加することと同等のようです。
この解決策は何人かの著者によって提案されましたが、ニックからの答えはついに私を信じさせました。
私のマシンでは、Eclipseがこの情報を使用することもあれば、使用しないこともありました。これはおそらく私のせいであるかEclipseのバグでしたが、クラスファイルやコンパイルの問題ではありませんでした。とにかく、今私は情報が間違いなく存在することを知っています。
しかし、インターフェースの解決策はありません
これはクラスでは(一種の)問題なく機能しますが、インターフェイスでは機能しません。
私にとって、論理的な理由は、-g:varsがローカル変数の名前のみを提供することであるように思われます。これは、javacのドキュメントにも記載されています。メソッドの本体では、そのパラメーターはローカル変数に非常に似ているため、-g:varsでカバーされます。インターフェイスメソッドには本体がないため、ローカル変数を使用できません。
私の最初の質問はクラスだけを求めていました。違いがあるかもしれないとは知らなかったからです。
クラスファイル形式
gidが指摘したように、クラスファイル形式はパラメータ名の格納をサポートしていません。クラスファイルの仕様で、メソッドのパラメーター名をホフするデータ構造を説明するセクションを見つけましたが、これはインターフェイスのコンパイル時には絶対に使用されません。
クラスをコンパイルするとき、上記のデータ構造が使用されているかどうか、またはEclipseがメソッド本体内のパラメーターの使用法からパラメーター名を推測するかどうかがわかりません。専門家はこれを明確にすることができますが、それは私が思うほど適切ではありません。
java - javacに警告をエラーとして扱わせる
プログラムをコンパイルするAntファイルがあります。コンパイラから警告が報告された場合、javacタスクを失敗させたいです。それを行う方法についての手がかりはありますか?
ant - Ant javac タスクを使用してコンパイルされたファイルを後処理するにはどうすればよいですか?
この実行中にコンパイルされたファイルのリストが必要です。このリストを後続の後処理ステップにフィードしたいと考えています。
この実行中にコンパイルされたファイルを一覧表示するオプション (listfiles オプションを参照) を見つけましたが、コンソールに一覧を表示する場合にのみ適しているようです。
何か案が?
編集:インクリメンタル コンパイルについて話しているので、ビルド フォルダーのファイルセットを取得することはできません。
編集: 1つのアイデアはカスタムロガーのようですが、私はまだもっと単純なものを探しています
編集:別のアイデアは、 javac の前に FileSet で依存セレクターを使用し、どういうわけかリストをメモリに保持して、javac の実行後に使用することです。
java - Annotation Processor for Java でメソッド呼び出しのクラスを発見する
特定の注釈を含むクラスに属するメソッドにいくつかの厳密な呼び出し規則を適用するために、ビルド システム用のいくつかのツールを作成しています。
コンパイラ ツリー API を使用しています...
私が疑問に思っているのは、「ツリー」をトラバースするときに、MethodInvocation のクラス/インターフェイスのタイプをどのように伝えることができるかということです。
TreePathScanner を次のようにサブクラス化しています:
メソッドを呼び出そうとしているクラス(またはインターフェイス)のタイプを伝える方法があることを願っています。私はこれについて間違った方法で進んでいますか?アイデアをありがとう...
java - クラスファイル名の $1 は何ですか?
その Java ファイルの内容は次のとおりです。