[RESOLVIDO] Colocar as classes padrao do java 7 dentro do JAR (Eclipse)

7 respostas
S

Ola pessoal.
Nao consegui achar algo q me possa ajudar nesse caso.
Eu fiz um projeto compilado com o java 6 mas eu uso algumas classes do java 7. Quando eu crio o jar através do export do eclipse, as classes do java 7 nao sao importadas para dentro do jar (por exemplo java.nio.file.Paths). Eu ja usei as tres opçoes do eclipse (extract required libraries into generated JAR, package required libraries into generated JAR e Copy required libraries into a subfolder next to the generated JAR) e nenhuma inclui as classes do java 7. Alguém pode me ajudar?

Valeu

7 Respostas

Ataxexe

Você não precisa (e nem deve) fazer isso. Por que você quer colocar as classes do Java (que já vêm com a própria JVM) no seu JAR?

S

Por que eu fiz esse programa p rodar com o jre 6, porém eu uso algumas classes do 7. Pensei q eu pudesse fazer isso.

Ataxexe

Nesse caso você deve usar o jre 7 ou remover as dependências com as classes do Java 7.

E

As classes do pacote java.nio.file são escritas em JNI (código nativo) e requerem um ambiente Java 7 para rodarem.

Ou você muda seu programa para não usar essas classes, ou você atualiza a JVM/JRE desse ambiente.

drsmachado

Skim:

Eu fiz um projeto compilado com o java 6 mas eu uso algumas classes do java 7.

Primeiro que se você incluiu qualquer coisa que só existe no java 7 (como multi catch), teu projeto nem compila para a versão 6, ou seja, você não pode criar um projeto, compilar e gerar um .jar se este não estiver 100% compatível (e isso significa utilizar apenas o que existe na versão) com a versão específica do java.
Trocando em miúdos, você criou um projeto java 7.

S

drsmachado:
Skim:

Eu fiz um projeto compilado com o java 6 mas eu uso algumas classes do java 7.

Primeiro que se você incluiu qualquer coisa que só existe no java 7 (como multi catch), teu projeto nem compila para a versão 6, ou seja, você não pode criar um projeto, compilar e gerar um .jar se este não estiver 100% compatível (e isso significa utilizar apenas o que existe na versão) com a versão específica do java.
Trocando em miúdos, você criou um projeto java 7.

No eclipse eu coloquei p compliar c o java 6. Acho estranho essa coisa q eu posso usar as classe do java 7, compilar em java 6, criar um jar e depois nao poder usar.

Ataxexe

Skim:
drsmachado:
Skim:

Eu fiz um projeto compilado com o java 6 mas eu uso algumas classes do java 7.

Primeiro que se você incluiu qualquer coisa que só existe no java 7 (como multi catch), teu projeto nem compila para a versão 6, ou seja, você não pode criar um projeto, compilar e gerar um .jar se este não estiver 100% compatível (e isso significa utilizar apenas o que existe na versão) com a versão específica do java.
Trocando em miúdos, você criou um projeto java 7.

No eclipse eu coloquei p compliar c o java 6. Acho estranho essa coisa q eu posso usar as classe do java 7, compilar em java 6, criar um jar e depois nao poder usar.

Isso não é estranho. O que você fez confusão foi o uso das classes na compilação. Uma coisa é o alvo da compilação (no caso, a versão do Java) e outra é o classpath usado na compilação (no caso, a API Java 7).

Você pode compilar um projeto em Java 5 usando a API da versão 6 como parte do classpath. Como não houveram modificações na sintaxe da linguagem da versão 5 para a 6, você só terá que garantir que não usou nenhum recurso da API da versão 6 que não existe na versão 5 (como o Arrays#copyOf, por exemplo). Eu não recomendaria isso, mas é possível.

No seu caso, se o projeto compilou para a versão 6, significa que você não usou nenhum recurso novo de sintaxe do Java 7.

Criado 10 de maio de 2013
Ultima resposta 17 de mai. de 2013
Respostas 7
Participantes 4