web-dev-qa-db-ja.com

javac:無効なターゲットリリース:1.7

OS X Mavericksを使用していて、JDKをアップグレードした後、antでコンパイルできなくなりました。

私は通常のグーグルを実行しましたが、回答の大部分はJava_HOMEが設定されていないことを示しています。

私のstackoverflowを助けてください、あなたは私の唯一の希望です!

役に立つかもしれない情報

$ tail -n1 /etc/profile
export Java_HOME=$(/usr/libexec/Java_home -v 1.7)

$ echo $Java_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

$ which javac
/usr/bin/javac

$ ls -lah /usr/bin/javac
lrwxr-xr-x  1 root  wheel    75B  8 Jan 11:23 /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac

$ ls -lah /System/Library/Frameworks/JavaVM.framework/Versions/
total 80
drwxr-xr-x  13 root  wheel   442B 19 Mar 10:10 .
drwxr-xr-x  12 root  wheel   408B 19 Mar 09:59 ..
lrwxr-xr-x   1 root  wheel    10B  8 Jan 11:23 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B  8 Jan 11:23 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B  8 Jan 11:23 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B  8 Jan 11:23 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B  8 Jan 11:23 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B  8 Jan 11:23 1.6.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B 19 Mar 10:10 1.7 -> CurrentJDK
lrwxr-xr-x   1 root  wheel    10B 19 Mar 10:10 1.7.0 -> CurrentJDK
drwxr-xr-x   8 root  wheel   272B  8 Jan 11:23 A
lrwxr-xr-x   1 root  wheel     1B  8 Jan 11:23 Current -> A
lrwxr-xr-x   1 root  wheel    58B 19 Mar 10:10 CurrentJDK -> /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents

$ javac -version -source 1.7 -target 1.7 -fork true
javac 1.7.0_51
javac: invalid source release: 1.7
Usage: javac <options> <source files>
10
davedave

努力と問題の絞り込みを手伝ってくれた@ david-wに感謝します。

解決するために、私はしなければなりませんでした

Sudo cp $Java_HOME/lib/tools.jar /Library/Java/Extensions/

前述のように ここ

愚かなOSx

14
davedave

受け入れられた答えの解決策は私にはうまくいきませんでした。エラーが発生しました:

tools.jar:そのようなファイルやディレクトリはありません。

しかし、私は実用的な解決策を見つけました ここ 。要するに、私は Oracle Webサイトのjdkの最新バージョン をインストールしました。これで問題は解決します。

2

私もOSX Mavericksを使用しており、OracleのJava 1.7.0_51です。-forkオプションはありませんが、他はすべて正常に機能しているようです。

HelloWorld.Java

public class HelloWorld
{
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

コマンド:

$ javac -version -source 1.7 -target 1.7 -fork true *.Java
javac 1.7.0_51
javac: invalid flag: -fork
Usage: javac <options> <source files>
use -help for a list of possible options
$ javac -version -source 1.7 -target 1.7 *.Java
javac 1.7.0_51
$   # Everything compiled...

OpenJDKまたはOracleの公式リリースを使用していますか? OpenJDKがバージョン1.7をまだ認識していない可能性があります。私は、OpenJDKが公式のOracleリリースの背後にあることを知っています。

  • -source-targetを省略した場合はどうなりますか?
  • どちらか一方しかない場合はどうなりますか? 1.6ではなく1.7で動作しますか?

表示されるエラーメッセージは、1.8を試したときに表示されるエラーメッセージと同じです。コマンドラインから、またはEclipseから、またはAntからコンパイルしようとしていますか?

もう1つの最後の可能性:.はピリオドではありません:

$ javac -version -source 1․7 -target 1.7 *.Java
javac: invalid source release: 1․7
Usage: javac <options> <source files>
use -help for a list of possible options

それは期間ではありません。 終止符e2:80:a4であり、終止符/ピリオド2e)ではありません。

0000000    j   a   v   a   c       -   v   e   r   s   i   o   n       -
           6a  61  76  61  63  20  2d  76  65  72  73  69  6f  6e  20  2d
0000020    s   o   u   r   c   e       1   ․  **  **   7       -   t   a
           73  6f  75  72  63  65  20  31  e2  80  a4  37  20  2d  74  61
0000040    r   g   e   t       1   .   7       *   .   j   a   v   a  \n
           72  67  65  74  20  31  2e  37  20  2a  2e  6a  61  76  61  0a
0000060
0
David W.