Professor, esse erro acontece no eclipse quando eu tento mover a pasta br para dentro do diretorio br.com.alura, isso acontece com todos os pacotes no eclipse, como eu consigo resolver isso?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Professor, esse erro acontece no eclipse quando eu tento mover a pasta br para dentro do diretorio br.com.alura, isso acontece com todos os pacotes no eclipse, como eu consigo resolver isso?
Renato, este formato de ter um diretório após o diretório src ainda não tem suporte pelo eclipse (Não consegui fazer também). O que você pode fazer é trabalhar pela ide (mesmo com erros) e compilar e executar por linha de comando ou se quiser trabalhar pelo eclipse, usar apenas o module-info. Infelizmente isso ainda é uma limitação.
Professor, como eu faço para executar os comandos do module-path sem precisar criar o diretorio br.com.alura?
Você pode colocar no diretório src/ os pacotes br/com/alura/{pacotes específicos}, apenas tem que lembrar que o arquivo module-info.java tem que estar no mesmo nível do pacote br, ou seja, dentro de src. =)
Estou tentando executar o seguinte comando:
javac -d mods\br\com\alura --module-path mods src\br\com\alura\modelo\dominio\Categoria.java src\br\com\alura\modelo\dominio\Livro.java src\br\com\alura\modelo\dominio\NotaFiscal.java src\br\com\alura\http\dao\LivroDAO.java src\br\com\alura\nf\servico\NotaFiscalServico.java src\br\com\alura\nf\subscriber\NotaFiscalSubscriber.java src\br\com\alura\nf\util\NotaFiscalUtil.java src\br\com\alura\Principal.java
Aparece a seguinte mensagem:
Usage: javac use --help for a list of possible options
algo esta errado?
Como você não quer mais o diretório br.com.alura, você pode criar apenas uma pasta mods e colocar os arquivos compilados nele.
javac -d mods --module-path mods ...
=)
javac -d mods --module-path mods src\br\com\alura\modelo\dominio\Categoria.java src\br\com\alura\modelo\dominio\Livro.java src\br\com\alura\modelo\dominio\NotaFiscal.java src\br\com\alura\http\dao\LivroDAO.java src\br\com\alura\nf\servico\NotaFiscalServico.java src\br\com\alura\nf\subscriber\NotaFiscalSubscriber.java src\br\com\alura\nf\util\NotaFiscalUtil.java src\br\com\alura\Principal.java
Executei o comando desta forma e ainda aparece a mensagem
Usage: javac use --help for a list of possible options
Tenta colocar a barra após mods para ver se é porque o compilador não está identificando como um diretório.
javac -d mods\ --module-path mods ...
Executei o comando java --help no prompt e o modelo do comando é -d module name --describe-module module name
Mas você está tentando compilar ou executar? Lembrando que se for compilar é o javac, se for executar é o java. Ambos tem os seus "--help" específicos.
Estou tentando compilar com module path, executei o comando javac --help e diz que o comando deve ser -d directory Specify where to place generated class files
Executei o comando aqui para exemplo.
javac -d modules --module-path modules src\br.com.alura\br\com\alura\modelo\dominio\Categoria.java
E ele criou a pasta modules com o Categoria.class dentro.
Você está na raiz do projeto?
c:\Users\Renato Nobrega\eclipse-workspace\1755-aula5-novidades-java-elivraria-master> javac -d modules --module-path modules src\br\com\alura\modelo\dominio\Categoria.java
error: file not found: src\br.com.alura\br\com\alura\modelo\dominio\Categoria.java
Está correto. Tenta criar uma pasta com outro nome, igual eu fiz no exemplo ai em cima.
agora funcionou, tinha esquecido de tirar o diretorio br.com.alura e rodei o comando javac -d modules --module-path modules src\br\com\alura\modelo\dominio\Categoria.java
Legal!! =)
como faço agora para executar o module path?
tentei o comando java --module-path modules src\br\com\alura\Principal.java e da esse erro:
src\br\com\alura\Principal.java:7: error: package br.com.alura.http.dao does not exist import br.com.alura.http.dao.LivroDAO; ^ src\br\com\alura\Principal.java:8: error: package br.com.alura.modelo.dominio does not exist import br.com.alura.modelo.dominio.Livro; ^ src\br\com\alura\Principal.java:9: error: package br.com.alura.modelo.dominio does not exist import br.com.alura.modelo.dominio.NotaFiscal; ^ src\br\com\alura\Principal.java:10: error: package br.com.alura.nf.util does not exist import br.com.alura.nf.util.NotaFiscalUtil; ^ src\br\com\alura\Principal.java:16: error: cannot find symbol List livros = new LivroDAO().listar(); ^ symbol: class Livro location: class Principal src\br\com\alura\Principal.java:16: error: cannot find symbol List livros = new LivroDAO().listar(); ^ symbol: class LivroDAO location: class Principal src\br\com\alura\Principal.java:31: error: cannot find symbol NotaFiscalUtil util = new NotaFiscalUtil(); ^ symbol: class NotaFiscalUtil location: class Principal src\br\com\alura\Principal.java:31: error: cannot find symbol NotaFiscalUtil util = new NotaFiscalUtil(); ^ symbol: class NotaFiscalUtil location: class Principal src\br\com\alura\Principal.java:33: error: cannot find symbol util.emitir(new NotaFiscal(nome)); ^ symbol: class NotaFiscal location: class Principal 9 errors error: compilation failed
O comando abaixo é para executar =)
java --module-path modules -m br.com.alura/br.com.alura.Principal
Error occurred during initialization of boot layer java.lang.module.FindException: Module br.com.alura not found
como seria executar o comando sem o modulo br.com.alura?
Com o module-path, você precisará de um módulo. Mesmo que não tenha aquele diretório "br.com.alura", você precisará ter um arquivo module-info.
E a ideia é que seu arquivo tenha o nome do módulo.
module br.com.alura { }
O arquivo é compilado junto com as outras classes e no momento de executar, você utiliza o comando que eu informei acima.
eu criei o arquivo module-info.java com nome br.com.alura dentro da pasta src no mesmo nivel da pasta br, tenho que criar esse arquivo dentro da pasta modules tambem?
Não, o que você precisa é compilá-lo para pasta modules.
javac (invoca o compilador) -d modules (vai criar uma pasta chamada modules, caso não exista) --module-path modules (o caminho do módulo será a pasta modules) src/ ... (classes que serão compiladas no module-path)
É isso que o comando faz.
Quando você invoca o java, você está chamando a jvm que carregará as classes compiladas no module-path e fará a execução do programa a partir da classe Principal.
Por isso que no comando
java --module-path modules -m br.com.alura/br.com.alura.Principal
Com o --module-path você indica o caminho que encontram os módulos (diretório modules), com o -m você informa qual o módulo que contém a sua classe com o método main (no nosso caso é a classe br.com.alura.Principal do módulo br.com.alura (nome definido no module-info).
Professor, quando executo o comando java --module-path modules -m br.com.alura/br.com.alura.Principal ocorre o mesmo erro.
Error occurred during initialization of boot layer java.lang.module.FindException: Module br.com.alura not found
Professor, finalmente encontrei o problema, acontece que estava faltando compilar o arquivo module-info.java, adicionei o caminho src\module-info.java ao comando javac -d modules --module-path modules... e agora consegui executar com module-path, obrigado pela atenção e paciencia!