Bibliotecas com classes de mesmo nome [RESOLVIDO]

Olá a todos.

Estava querendo fazer uma aplicação que funcionasse como um duelo de programação em Java.
Assim:
dois programadores fazem, cada um, uma classe chamada Jogo, que tem um método:

public static int jogar(int[] vetor){ //TODO Aqui vem o código do cara }

ae eu queria criar um programa que seria tipo um juiz para o jogo, ou seja, gerenciar o jogo e dar o resultado de quem venceu, mas se eu coloco os dois jars na mesma aplicação, na hora de importar ou instanciar o java só pega o método de uma, não tem como eu diferenciá-las pois tem o mesmo nome e mesmo método.

Como eu posso fazer isso?

Acho que entendi mais ou menos o que tu quer fazer, mas desse jeito não dá mesmo.

Vai ter que resolver o problema de outro jeito, com o uso de arquivos, rede, algo assim… acho que pro teu problema, arquivos resolve…

Como seria esse uso de arquivos?

grato pela atenção

Crie uma interface com esse método. E deixe que cada programador crie a classe que quiser, desde que implemente essa interface. Então, instancie essas classes através de reflexão.

Melhor do que isso, ao invés deles programarem em Java, faça em Groovy. Assim não há necessidade de compilar os scripts do jogador. Mais ou menos como fiz no caça a bandeira:
http://vinigodoy.wordpress.com/meus-jogos

Legal,
vou dar uma olhada no Groovy, parece ser bem interessante.

Mas fazendo pela interface eu teria que colocar os arquivos fonte, ou seja, os .java de cada programador.
Não tem como fazer isso, só que sem precisar dos .java, mas utilizar apenas os arquivos compilados, ou seja, os .jar?

Obrigado pela atenção, me esclareceu bastante.

Tem sim. Use a classe URLClassLoader para carregar os .jar no seu classpath. Depois disso, você precisa instanciar as classes por reflexão (o que vc já faria de qualquer forma).

Mas, melhor ainda é usar o groovy. Há várias vantagens:

  1. Não precisa compilar os scripts. O que também significa que seu usuário só precisa ter a JRE na máquina e nem precisa saber nada sobre o que é um compilador;
  2. Você não precisa sair da aplicação e abrir de novo para re-executar um script;
  3. É uma linguagem de script (sintaxe mais fácil, duck typing, closures);
  4. Você tem muitas formas de controle sobre o que está sendo executado.

Esse é o tipo de coisa para qual linguagens como essa foram feitas.

Tava vendo o http://vinigodoy.wordpress.com/meus-jogos/ e achei muito interessante. Parabéns.

Vou usar Groovy mesmo, aproveito e já aprendo, pois não me parece ser muito complicado.

Obrigado.