Isso me causou dor de cabeça usando o String.join do Java 8 em uma compilação do Maven com a origem e o destino definidos como 7. Usei a regra requireJavaVersion do plugin maven-enforcer-plugin para impor o intervalo <version>[1.7.0,1.7.0-79]</version>que pelo menos interrompe a compilação com uma mensagem clara em vez de um teste com mensagem obscura.
Para usar o javac do JDK N para o compilador cruzado para uma versão de plataforma mais antiga, a prática correta é:
Use a configuração -source mais antiga.
Configure o caminho do bootclass para compilar com o rt.jar (ou equivalente) da plataforma mais antiga.
Se a segunda etapa não for executada, o javac usará obedientemente as regras do idioma antigo combinadas com as novas bibliotecas, o que pode resultar em arquivos de classe que não funcionam na plataforma mais antiga, pois as referências a métodos inexistentes podem ser incluídas.
Atualmente, estou executando o Netbeans IDE 8.0.2 com o JDK 1.8 no Linux Mint 17.1, que possui versão-java = 1.7.0_65. Para poder executar arquivos JAR, tive que definir o myProject> Propriedades> Origem / Formato Binário: JDK 7. No entanto, ao criar (myProject> Clean and Build), recebi um aviso semelhante: aviso: [options] caminho da classe de auto-inicialização não definido em conjunto com -source 1.7.
A solução foi adicionar a plataforma Linux Mint JDK1.7 à lista de plataformas Netbeans.
Isso pode ser feito em myProject> Properties> Libraries e clicando no botão Manage Platforms .... Em seguida, na janela Java Platform Manager, clique em Add Platform ... e selecione: Java Standard Edition, clique em Next e navegue para / usr / lib / jvm / java-7-openjdk-amd64 (ou qualquer que seja o local da versão do JDK 1.7) ) O nome da plataforma será definido como JDK1.7. Basta clicar em Concluir e pronto.
Agora você pode selecionar a plataforma Java nas propriedades do projeto. Selecionando JDK1.7 e executando o Clean and Build: não há mais avisos. :-)
Avisos que podem ser ativados ou desativados com a opção -Xlint
Ative o nome do aviso com a opção -Xlint: name, em que name é um dos seguintes nomes de aviso. Da mesma forma, você pode desativar o nome do aviso com a opção -Xlint: -name: ...
opções Avise sobre problemas relacionados ao uso das opções da linha de comando. Consulte Exemplo de compilação cruzada para obter um exemplo desse tipo de aviso.
Certifique-se de que sua versão jdk e a versão de origem do compilador java sejam as mesmas. Por exemplo, se você estiver usando o maven, e tiver configurado o projeto usando o JDK 9, o seguinte trecho de pom faria o aviso acima
<version>[1.7.0,1.7.0-79]</version>
que pelo menos interrompe a compilação com uma mensagem clara em vez de um teste com mensagem obscura.Respostas:
Em uma postagem no blog :
fonte
uso do bootclasspath
Nos sistemas UNIX, localize
rt.jar
usando:Defina
JAVA_HOME
para quert.jar
esteja localizado em$JAVA_HOME/jre/lib/rt.jar
e:Testado no Ubuntu 14.04 para Oracle Java 7 e 8.
fonte
Atualmente, estou executando o Netbeans IDE 8.0.2 com o JDK 1.8 no Linux Mint 17.1, que possui versão-java = 1.7.0_65. Para poder executar arquivos JAR, tive que definir o myProject> Propriedades> Origem / Formato Binário: JDK 7. No entanto, ao criar (myProject> Clean and Build), recebi um aviso semelhante: aviso: [options] caminho da classe de auto-inicialização não definido em conjunto com -source 1.7.
A solução foi adicionar a plataforma Linux Mint JDK1.7 à lista de plataformas Netbeans.
Isso pode ser feito em myProject> Properties> Libraries e clicando no botão Manage Platforms .... Em seguida, na janela Java Platform Manager, clique em Add Platform ... e selecione: Java Standard Edition, clique em Next e navegue para / usr / lib / jvm / java-7-openjdk-amd64 (ou qualquer que seja o local da versão do JDK 1.7) ) O nome da plataforma será definido como JDK1.7. Basta clicar em Concluir e pronto.
Agora você pode selecionar a plataforma Java nas propriedades do projeto. Selecionando JDK1.7 e executando o Clean and Build: não há mais avisos. :-)
fonte
O aviso pode ser desativado com uma nova subopção do JDK 7 na família -Xlint, -Xlint: -options. por exemplo
$ javac -source 1.5 -Xlint: -options exemplo.java
fontes: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source
e
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#xlintwarnings
Avisos que podem ser ativados ou desativados com a opção -Xlint
Ative o nome do aviso com a opção -Xlint: name, em que name é um dos seguintes nomes de aviso. Da mesma forma, você pode desativar o nome do aviso com a opção -Xlint: -name: ...
opções Avise sobre problemas relacionados ao uso das opções da linha de comando. Consulte Exemplo de compilação cruzada para obter um exemplo desse tipo de aviso.
fonte
Certifique-se de que sua versão jdk e a versão de origem do compilador java sejam as mesmas. Por exemplo, se você estiver usando o maven, e tiver configurado o projeto usando o JDK 9, o seguinte trecho de pom faria o aviso acima
A correção da versão de origem / destino para 9 corrige o aviso como abaixo
fonte
Faça o download do JDK (na versão de aviso por escrito) -> instalar
Clique com o botão direito do mouse em seu projeto -> Propriedades -> Bibliotecas -> plataforma Java (adicione o JDK instalado) -> OK
fonte