Pergunta

Eu tenho um projeto que usa genéricos e alguns Java 1.5/6 bits e peças. É possível compilar esse código para funcionar em um sistema executando um 1.4 JRE?

Eu uso um script de construção de formigas e tarefa JAVAC para compilar a biblioteca. Isso aumenta bem enquanto o atributo de destino é 1.5.

Se eu mudar o alvo para 1,4, recebo o seguinte erro:

generics are not supported in -source 1.4 
(use -source 5 or higher to enable generics)

Então, adiciono um atributo de origem e tente um valor de 5 e 1.5. Novo erro:

javac: source release 5 requires target release 1.5

Vou ter que passar por todo o meu código e mudar as coisas 1.5 para fazer isso funcionar?

Foi útil?

Solução

Eu não usei nenhuma dessas soluções, mas existe

  1. Retroweaver
  2. especificando o não suportado -target jsr14 poderia trabalhar
  3. Retrotranslator
  4. Declawer
  5. JBossRetro

Você também pode encontrar javac -XD-printflat Útil (embora tome cuidado para não substituir sua fonte original).

Outras dicas

Eu tenho um projeto que usa genéricos e alguns Java 1.5/6 bits e peças. É possível compilar esse código para funcionar em um sistema executando um 1.4 JRE?

Não.

Vou ter que passar por todo o meu código e mudar as coisas 1.5 para fazer isso funcionar?

Sim. Mas há uma maneira de automatizar isso, usando uma ferramenta chamada Retroweaver. Não há garantia de que ele pegue tudo.

Eu tive uma boa experiência com o retrotranslator (a Retroweaver não funcionou bem com o que eu precisava, não consigo lembrar exatamente o que).

Funcionou muito bem para o meu propósito (criando versões JDK1.4 de logback).

http://retrotranslator.sourceforge.net/

Os genéricos são implementados por apagamento do tipo, para que funcionem antes que os genéricos fossem introduzidos. No entanto, você não poderá compilar o código com uma versão mais antiga do compilador (não sei por que você gostaria de fazer isso)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top