, bem galera , de fato realmente ,inclusive aqui , tem varios artigos sobre isso , Mas quanto mais leio e pesquiso mais confuso eu fico . Estou desenvolvendo um projeto e ao longo do percurso varias duvidas surgiram no entanto nenhum se perpetuou tanto como essa e sinceramente nao vejo nenhuma outra saida a nao ser uma consulta direta ! è o seguinte
O programa está 99% pronto oque falta e esta dando problema é um esquema que estou tentando fixar para fazer atualizações do programa. Eu nao quero criar uma aplicao para javaws !
As classes foram dividas em dois packages , Sources.jar e Bin.jar , contando com uma classe externa á loader.class.
Deveria funcionar assim , o loader.class consulta a web e verifica que o hash do Bin.jar é diferente do hash da versao atual e entao faz download do novo package e deleta antigo e entao inicia a aplicacao , Isso nao é o problema fiz numa boa ,o problema é que nao consigo de forma alguma fazer esse loader funcionar . Pra nao ter que escrever muito abaixo to postando algo analogo[color=darkblue] [/color] ao que eu preciso.
arquivos:
C:\pro\packteste\Bin.jar
|__sub1.class
|
|_sub2.class
C:\pro\packteste\principal.class
import Vini.*;
public class principal{
public static void main(String[] args){
sub1 s1 = new sub1();
sub2 s2 = new sub2();
s1.run("Frase 1");
s2.run("Frase 2");
}
}
package Vini;
public class sub1{
public void run(String input){
System.out.println(input);
}
}
package Vini;
public class sub2{
public void run(String input){
System.out.println(input);
}
}
Ao compilar :
crio uma pasta com o nome Vini e jogo la dentro os arquivos sub1.java e sub2.java
e executo o seguinte comando no console:
C:\pro\packteste>javac principal.java
Ok ,compila numa boa em seguida executo:
C:\pro\packteste>java principal
O progrma funciona tambem , mas como eu disse la em cima nao da pra ser assim preciso de uma jar e a duvida aparece aqui:
Crio um arquivo Bin.jar ( pego a pasta Vini e compacto com o zip e renomeio para Bin.jar)
deleto a pasta Vini.
Ao compilar novamente:
C:\pro\packteste>javac -cp Bin.jar principal.java
Sim ,compila perfeitamente outra vez , mas eis que chego ao lugar que ja me fez perder noite de sono
:x :x :x
Agora quando tento executar:
C:\pro\packteste>java principal
[quote]Exception in thread “main” java.lang.NoClassDefFoundError: Vini/sub1
at principal.main(principal.java:5)
[/quote]
ou
C:\pro\packteste>java -cp Bin.jar principal
È isso ai , poxaa alguem podia me dar uma forca , nao tenho muita exeperiencia com packages , lendo pela net penso que eu deveria criar um classloader ,porem ja li tantoo a respeito e mesmo assim nao consegui fazer um. Se alguem puder postar um codigo de um classloader que funcione nesse exemplo analogo que eu citei ja é o suficiente , ou se nao propor algo melhor.