1
resposta

The package javax.xml is not accessible

Bom dia,

Eu estava começando o projeto do curso e o Eclipse me retorna o erro "The package javax.xml is not accessible" no import do seguinte código do modelo usado no curso:

package br.com.caelum.estoque.modelo.item;

import javax.xml.bind.annotation.XmlEnumValue;

public enum TipoItem {

    @XmlEnumValue("Livro")
    LIVRO("Livro"), 
    @XmlEnumValue("Celular")
    CELULAR("Celular"),
    @XmlEnumValue("Tablet")
    TABLET("Tablet");

    private String nome;

    TipoItem(String nome) { 
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }

    public static boolean existe(String valor) {
        try{
            //joga IllegalArgumentException caso nao exista
            TipoItem.valueOf(valor.toUpperCase());
        }catch(IllegalArgumentException e) {
            return false;
        }
        return true;
    }
}

Além disso, quando faço os imports "import javax.jws.Webservice;" e "import javax.xml.ws.Endpoint;", o Eclipse também não consegue importar os pacotes. Tentei criar projetos usando JavaSE-11 e JavaSE-1.8 e obtenho os mesmos erros. Vi alguns posts relationados no fórum dizendo que o JAXB possui alguns problemas para o Java 9+ e que para resolver esses problemas é preciso usar a opção "--add-modules" para adicionarmos módulos ao Class Path. Mas onde como eu executaria esses comandos (no caso, "javac --add-modules java.xml.bind TesteUnmarshal.java" ou "java --add-modules java.xml.bind TesteUnmarshal")? Isso me parece ser um comando de terminal, mas nunca executei nada no Eclipse via terminal (sempre cliquei no botão verde de play para executar meus códigos e servers).

1 resposta

A melhor coisa a ser feita é baixar o projeto da primeira aula e dar um import no eclipse. O ponto principal é que o Java 11 simplesmente não inclui mais o jax. Além disso, mesmo que você baixe uma implementação, a especificação não é mais javax.xml... é jakarta.xml...

Se você realmente precisa do java 11 parece melhor criar um projeto do maven e adicionar as dependências. P.ex.:

<!-- https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>3.0.1</version>
</dependency>

Eu realmente aconselho usar o projeto do curso. Lembrando que é pra funcionar normal se você usar Java 1.8.