16

sun.misc.BASE64Encoderパッケージのencode()メソッドを使用しています。生成されるコンパイラ警告を抑制するにはどうすればよいですか?

sun.misc.BASE64EncoderはSun独自のAPIであり、で削除される可能性があります

そしてフォローアップとして、Eclipseでこの警告が表示されないのはなぜですか?

4

9 に答える 9

25

Sun独自のAPI警告を抑制するための完全に文書化されていない方法があります!コマンドラインに追加-XDignore.symbol.fileします。javac

これはhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6476630で見つかりました(最後のコメントまでスクロールしてください)。その最後のコメントを追加した「xfournet」について、私たちは皆親切な考えを考える必要があります!

于 2012-03-05T20:08:58.917 に答える
17

別のBase64実装に切り替えることができます。たとえば、 Apachecommonsパッケージの一部であるhttp://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.htmlです。すでにクラスパス、またはhttp://iharder.sourceforge.net/current/java/base64/に含まれています。これは、パスに別のJarが必要ない場合は、実装を取得してソースツリーに固定することができます。

于 2009-07-16T10:24:24.663 に答える
7

この警告を無効にできないため

于 2009-07-16T10:23:21.153 に答える
3

Eclipseには、これを(すべき)設定があります。たとえば、Eclipse3.1リリースノートの説明を参照してください。

環境設定→Java→コンパイラ→エラー/警告→非推奨および制限されたAPI→禁止/非推奨のリファレンス

(およびこの設定のプロジェクト固有のオーバーライドを許可するプロジェクトプロパティページ)

于 2009-11-22T22:52:23.283 に答える
2

それらをオフにすることはできません。Eclipseは単にそれらをフィルタリングします(そうするように指示された場合)。

Linuxでのクイック暫定修正:

javac *.java 2>&1 | pcregrep -v -M ".*Sun proprietary API.*\n.*\n.*\^"

2>&1 ... STDERRをSTDOUTに入れるので、パイプライン "|" 動作します

pcregrepがシステムに存在する場合と存在しない場合があります。存在しない場合は、パッケージユーティリティを使用してください(例:Debian、Ubuntuなど: "sudo apt-get install pcregrep")

この式は、「Sun独自のAPI」警告と次の2行(行と、行内のエラーの位置を示す「^」を含む)を検索します。

「XY警告」は残しておきます。警告があったことを忘れないように、最後に入力してください; o)他の警告もある場合は、そこに報告されている数はもちろん正しくないことに注意してください:o)

また、標準の「grep」は複数の行にまたがることができないため、同様に機能しないことにも注意してください。

于 2009-11-22T20:55:35.283 に答える
2

プロプライエタリAPIを使用する際の固有の問題を理解し、とにかくそれを実行することにした場合、およびmavenを使用している場合は、pom.xmlファイルに以下を追加することに興味があるかもしれません。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <compilerArgument>-XDignore.symbol.file</compilerArgument>
    </configuration>
</plugin>
于 2013-10-21T20:07:28.650 に答える
0

クラスパスのライブラリjarに配置するクラスに呼び出しをカプセル化します。その場合、警告はそのライブラリが再コンパイルされたときにのみ表示されます。

于 2009-07-16T10:37:22.360 に答える
0

jdk 1.8を使用している場合は、以下を使用できます

java.util.Base64
于 2018-02-20T13:45:17.633 に答える
-3

このjavacオプション-Xlint:uncheckedはトリックを実行します。警告を無効にします。詳細については、javacのマニュアルを参照してください。

于 2011-05-17T11:31:13.013 に答える