Dado o código:
A diferença deste código para o do exemplo anterior é que esta aplicação está dentro de um pacote
package com.logicapp;
import com.pedroabs.*;
public class MyApp {
public static void main(String[] args){
CmdArgs.main(args);
}
}
Dentro da seguinte estrutura de pastas: C:\myProject3\src\com\logicapp
Que utiliza a biblioteca ‘pedro.jar’ encontrada em: C:\myProject3\jar
Compilando:
Vamos compilar para a pasta classes
C:\myProject3>javac -d classes -cp jar\pedro.jar src\com\logicapp\MyApp.java
Executando:
C:\myProject3\classes>java -cp ../jar/pedro.jar;. com.logicapp.MyApp pedro abs
0 element = pedro
1 element = abs
Se tentar o mesmo comando porém diretamente dentro das pastas que representam o pacote temos um erro, conforme pode-se observar abaixo
C:\myProject3\classes\com\logicapp> java -cp ../jar/pedro.jar;. com.logicapp.MyApp pedro abs
Error: Could not find main class com.logicapp.MyApp
Exception in thread “main” java.lang.NoClassDefFoundError: com.logicapp.MyApp
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:198)
Caused by: java.lang.ClassNotFoundException: com.logicapp.MyApp
at java.net.URLClassLoader$1.run(URLClassLoader.java:299)
at java.net.URLClassLoader$1.run(URLClassLoader.java:288)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:287)
at java.lang.ClassLoader.loadClass(ClassLoader.java:392)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:334)
at java.lang.ClassLoader.loadClass(ClassLoader.java:332)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:195)