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?
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!