[RESOLVIDO] Composição - Erro em Tempo de Execução - Exercício Simples

Fala galera estudando java, o tempo não para né :), me aventurando no cap 9 do livro deitel 8 edição Herança, tem um exercício que pede para passar o exemplo de herança para composição, eu fiz, só que quando executo da um erro e não sei o que pode ser…Pior que o exemplo de herança da o mesmo erro, quem puder me ajudar agradeço.

A classe não é complexa, só é um pouco grande devido aos métodos set e get para manipular as variáveis de instância

// Exercício 9.3: EmpregadoComissionado.java

public class EmpregadoComissionado
{
	private String primeiroNome;
	private String ultimoNome;
	private String numeroSegurancaSocial;
	private double faturamentoBruto; // vendas brutas semanais
	private double taxaComissao; // porcentagem da comissão
	
	// Construtor de cinco argumentos
	public EmpregadoComissionado( String primeiro, String ultimo, String nss, double fatura, double taxa )
	{
		// chamada implicita para o construtor Object ocorre aqui
		primeiroNome = primeiro;
		ultimoNome	 = ultimo;
		numeroSegurancaSocial = nss;
		setFaturamentoBruto( fatura ); // valida e armazena as vendas brutas
		setTaxaComissao( taxa ); // valida e armazena a taxa de comissão
	}
	
	// configura o nome
	public void setPrimeiroNome( String primeiro )
	{
		primeiroNome = primeiro; // deve validar
	}
	
	// retorna o nome
	public String getPrimeiroNome()
	{
		return primeiroNome;
	}
	
	// configura o sobrenome
	public void setUltimoNome( String ultimo )
	{
		ultimoNome = ultimo; // deve validar
	}
	
	// retorna o sobrenome
	public String getUltimoNome()
	{
		return ultimoNome;
	}
	
	// configura o CIC
	public void setNSS( String nss )
	{
		numeroSegurancaSocial = nss;
	}
	
	// retorna o CIC
	public String getNSS()
	{
		return numeroSegurancaSocial;
	}
	
	// configura a quantidade de vendas brutas
	public void setFaturamentoBruto( double fatura )
	{
		faturamentoBruto = ( fatura < 0.0 ) ? 0.0 : fatura;
	}
	
	// retorna a quantidade de vendas brutas
	public double getFaturaBruta()
	{
		return faturamentoBruto;
	}
	
	// configura a taxa de comissão
	public void setTaxaComissao( double taxa )
	{
		taxaComissao = ( taxa > 0.0 && taxa < 1.0 ) ? taxa : 0.0;
	}
	
	// retorna a taxa de comissão
	public double getTaxaComissao()
	{
		return taxaComissao;
	}
	
	// calcula os lucros
	public double lucros()
	{
		return getTaxaComissao() * getFaturaBruta();
	}
	
	// retorna a representação String do objeto EmpregadoComissionado
	@Override // indica que esse método sobrescreve um método de superclasse
	public String toString()
	{
		return String.format( "%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f",
			"Empregado Comissionado", getPrimeiroNome(), getUltimoNome(),
			"Número de Segurança Social", getNSS(),
			"Vendas Brutas", getFaturaBruta(),
			"Taxa de Comissão", getTaxaComissao() );
	}
}

Aqui vai a segunda classe

// Exercício 9.3: EmpregadoComissionadoSalarioBase.java

public class EmpregadoComissionadoSalarioBase
{
	private double salarioBase; // salário-base por semana
	private EmpregadoComissionado dados; // referencia ao objeto EmpregadoComissionado com os dados
		// primeiro nome, ultimo nome, nss, vendas, taxa
	// construtor de seis argumentos
	public EmpregadoComissionadoSalarioBase( EmpregadoComissionado meusDados, double salario )
	{
		dados = meusDados;
		setSalarioBase( salario ); // valida e armazena salário-base
	}
	
	// configura o salário-base
	public void setSalarioBase( double salario )
	{
		salarioBase = ( salario < 0.0 ) ? 0.0 : salario;
	}
	
	// retorna o salário-base
	public double getSalarioBase()
	{
		return salarioBase;
	}
	
	// calcula os lucros
	public double lucros()
	{
		// não permitido: taxaComissao e faturamentoBruto private em superclasse
		return getSalarioBase() + dados.lucros();
	}
	
	// retorna a representação de String de EmpregadoComissionado
	@Override // indica que esse método sobrescreve um método de superclasse
	public String toString()
	{
		// não permitido: tenta acessar membros private da superclasse
		return String.format(
			"%s %s\n%s: %.2f\n", "Salário-base",
				super.toString(), "Salário base", getSalarioBase() );
	}
}

E aqui vai a ultima classe que é a principal onde executo

// Exercício 9.3: EmpregadoComissionadoSalarioBaseTeste.java

public class EmpregadoComissionadoSalarioBaseTeste
{
	public static void main( String[] args )
	{
		// instacia o objeto EmpregadoComissionado
		EmpregadoComissionado empregado = new 
			EmpregadoComissionado( "Thyago", "Santos", "333-33-3333", 5000, .04 );
		EmpregadoComissionadoSalarioBase empregadoObj = new EmpregadoComissionadoSalarioBase( empregado, 300 );
			
		// obtém os dados de empregado comissionado
		System.out.println(
			"Informações de Empregado obtidas por métodos: \n" );
		System.out.printf( "%s %s\n", "Primeiro nome é",
			empregado.getPrimeiroNome() );
		System.out.printf( "%s %s\n", "Último nome é",
			empregado.getUltimoNome() );
		System.out.printf( "%s %s\n", "Número de Segurança Social é",
			empregado.getNSS() );
		System.out.printf( "%s %.2f\n", "Vendas Brutas é",
			empregado.getFaturaBruta() );
		System.out.printf( "%s %.2f\n", "A Taxa de Comissão é",
			empregado.getTaxaComissao() );
		System.out.printf( "%s %.2f\n", "O Salário Base é",
			empregadoObj.getSalarioBase() );
		
		empregadoObj.setSalarioBase( 1000 ); // configura o salário Base
		
		System.out.printf( "\n%s:\n\n%s\n",
			"Informações de Empregado atualizadas obtidas pelo toString", empregado.toString() );
	}
}

E o erro que dá é este:

Exception in thread “main” java.lang.UnsupportedClassVersionError: EmpregadoComissionadoSalarioBaseTeste : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: EmpregadoComissionadoSalarioBaseTeste. Program will exit.

Criei as 3 classes rodei no meu eclipse e não deu nenhum erro aqui cara.
Se o erro persiste, coloque a questão aqui no tópico e explique melhor o que estais tentando fazer que tu não está conseguindo.

Colei uma parte do erro no google e agora tenho quase certeza que o erro é do seu eclipse:

O que eu recomendo fazer: reinstalar o eclipse inteiro, não sei o porque do erro, mas pelo o outro tópico que eu mandei, isso é um erro na versão do eclipse.

Could not find the main class: EmpregadoComissionadoSalarioBaseTeste. Program will exit. = Não foi possível encontrar a classe principal: EmpregadoComissionadoSalarioBaseTeste. O programa está sendo finalizado.

[quote=evandrogrm]Colei uma parte do erro no google e agora tenho quase certeza que o erro é do seu eclipse:

O que eu recomendo fazer: reinstalar o eclipse inteiro, não sei o porque do erro, mas pelo o outro tópico que eu mandei, isso é um erro na versão do eclipse.

Could not find the main class: EmpregadoComissionadoSalarioBaseTeste. Program will exit. = Não foi possível encontrar a classe principal: EmpregadoComissionadoSalarioBaseTeste. O programa está sendo finalizado.[/quote]

Evandrogrm na verdade eu não uso eclipse, o editor que eu uso é o Geany, no caso agora estou usando o do linux, mais tenho no windows também, vou verificar se no windows acontece o mesmo erro, se não acontecer então deve ter algo de errado com a configuração no meu linux, deve ter desconfigurado com a instação de algum programa. Assim que eu ver posto aqui se foi isso sim ou outra coisa. Obrigado

Realmente o problema é com o Editor. Muito obrigado pela ajuda. Tomara que esse tópico pequeno sirva para alguém com o mesmo problema no futuro.

Não estás a tentar executar com uma versão do JAVA anterior àquela da compilação?

O que aconteceu foi o seguinte, eu tava com o jdk 7 aqui no meu linux(Ubuntu) que por sua vez não estava com o plugin java do firefox instalado, ai eu fui instalar o openjdk 6 para instalar o plugin junto enquanto tava programando, depois que acabou de baixar nem me liguei e ainda tava programando, ai compilei e executei e deu o erro. Porque deve ter desconfigurado. Ai eu dei um:

sudo update-java

no terminal e escolhi a minha versao do jdk depois dei permissão de escrita e leitura e ai voltou a funcionar normalmente.

De qualquer modo obrigado pela ajuda pmlm