2
respostas

Sintaxe para compilar classe dentro de pacote com jar no classpath

No exercício 5 do curso "Certificação Java SE Programmer 1 O básico de Java", na seção 3 "Crie aplicações Java executáveis com um método main", existem duas respostas que se assemelham muito:

javac -cp programa.jar:. b/A.java
javac -cp programa.jar:b b/A.java

No contexto do exercício, existe apenas um pacote com código, que é o b. No caso de existir outros pacotes com classes que são utilizadas pela classe A, entendo que o . seja a opção correta pois nem tudo que a classe A precisa em tempo de compilação estará somente dentro do pacote b.

Sendo assim, considerando apenas o contexto do exercício, a segunda opção também está correta? Senão, qual seria o motivo?

2 respostas

Opa, a segunda opção usar -jar como argumento de compilação, por isso que não está certa... Em relação ao seu exemplo, não estou certo se funcionaria. Você chegou a testar?

Preparei uma classe A dentro de uma package b assim:

package b;

import org.apache.commons.io.FilenameUtils;

public class A {
    public static void main(String [] args) {
        System.out.println("Hello World");
    }
}

Na hora de compilar, passei o commons-io.jar no classpath como sendo o programa.jar que o exercício pede, e nas duas respostas que citei o compilador não deu warning ou erro algum:

C:\Users\rafael\Desktop\Java>javac -cp commons-io-2.6.jar;. b/A.java

C:\Users\rafael\Desktop\Java>javac -cp commons-io-2.6.jar;b b/A.java

C:\Users\rafael\Desktop\Java>

Sendo assim, acredito que este exercício possui duas respostas corretas, pois ambas alternativas compilaram.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software