Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

erro

não consigo achar o problema:Exception in thread "main" java.lang.IllegalAccessError: tried to access field Funcionario.salario from class TestaEmpresa at TestaEmpresa.main(Funcionario.java:90)

e nesse codigo eu retirei o static da classe testa empresa por que o sistema alegava erro

class Funcionario{
    String nome;
    private double salario;
    private double rg;
    double departamento;
    Data dataEntrada = new Data();


    public void recebeAumento( double aumento){
        this.salario += aumento;
    }

    public double getGanhoAnual(){
        return this.salario*12;
    }

    void mostra(){
        System.out.println("O salario:"+ this.getSalario());
        System.out.println("O ganho: "+ this.getGanhoAnual());
        System.out.println("Data:" + this.dataEntrada.getFormatada());
        System.out.println("O rg:"+ this.getRg());

    }
    public double getSalario(){
        return this.salario;
    }

    public void setSalario(double novoSalario){
        this.salario= novoSalario;
    } 

     public double getRg(){
        return this.rg;
    }

    public void setRg(double novoRg){
        this.rg= novoRg;
    } 
}


class Data {
    int dia;
    int mes;
    int ano;

    void preencheData (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
     String getFormatada() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }

}


class Empresa{


        String nome;
        String cnpj;
        Funcionario[] funcionarios;

        void adicionar(Funcionario f){
        int posicao = 0;
        while(posicao < funcionarios.length) {
            if(this.funcionarios[posicao] == null) {
                this.funcionarios[posicao] = f;
                break;
            }
            posicao++;
            }
        }
        void mostraEmpregados(){
            for (int i=0; i<this.funcionarios.length; i++){
                System.out.println("Nome: " + this.funcionarios[i].nome);
                System.out.println("Funcionario na posiçao "+i);
                System.out.println("Salario: " + this.funcionarios[i].getSalario());
                System.out.println("RG: " + this.funcionarios[i].getRg());
            }
        }

        void mostraTodasAsInformacoes(){
            for (int i=0; i<this.funcionarios.length; i++){
                this.funcionarios[i].mostra();
            }
        }

        public boolean contem(Funcionario f){

            boolean existe= true;


            for (int i=0; i < this.funcionarios.length; i++){
                if(this.funcionarios[i]==f){
                    existe=true;
                    System.out.println("Existe");
                }else {
                    existe= false;
                    System.out.println("Nao Existe");
                }

        } 

return existe; 

 } 

class TestaEmpresa{
    public void main(String[]args){

        Empresa bolsao= new Empresa();
        bolsao.funcionarios= new Funcionario[10];

        Funcionario bilbo= new Funcionario();
        bilbo.nome= "Bilbo Baggins";
        bilbo.setSalario(12000);
        bilbo.getSalario();
        bilbo.setRg(1234);
        bilbo.getRg();
        bilbo.dataEntrada= new Data();
        bilbo.dataEntrada.preencheData(3,4,1239);
        bolsao.adicionar(bilbo);

        System.out.println( bilbo.getSalario());

        Funcionario pipin= new Funcionario();
        pipin.nome= "Peregrin Tuc";
        pipin.setSalario(670);
        pipin.getSalario();
        pipin.setRg(5564);
        pipin.getRg();
        pipin.dataEntrada= new Data();
        pipin.dataEntrada.preencheData(23,6,1367);
        bolsao.adicionar(pipin);

         System.out.println( pipin.getSalario());

        Funcionario sam= new Funcionario();
        sam.nome= "Samwise";
        sam.setSalario(5678);
        sam.getSalario();
        sam.setRg(6743);
        sam.getRg();
        sam.dataEntrada= new Data();
        sam.dataEntrada.preencheData(3,6,2016);
        bolsao.adicionar(sam);

         System.out.println( sam.getSalario());

        //bolsao.mostraTodasAsInformacoes();

    }
}    
}
7 respostas

Oi Isabel!

Esse erro de execução não deveria acontecer se todas as classes estiverem devidamente compiladas em suas novas versões. Você fez um javac arquivo.java? em qual arquivo? tente javac *.java caso você tenha mais de um arquivo java, e antes apague todos os .class

Mas tem outro problema:

λ javac Funcionario.java Funcionario.java:112: error: Illegal static declaration in inner class Empresa.TestaEmpresa public static void main(String[]args){ ^ modifier 'static' is only allowed in constant variable declarations 1 error

quando eu retiro o static o funcionariio.java é compilado porém a classe TestaEmpresa não

Isabel o seu metodo main esta faltando a palavra static. Muda essa linha.

  public void main(String[]args){

para

  public static void main(String[]args){

quando eu retiro o static o arquivo funcionario.java é compilado e a classe TestaEmpresa NAO. Quando eu ponho o arquivo funcionario.java não é compilado

Não entendi direito Isabel, quando você coloca a palavra static no seu metodo main o seu projeto não é copilado?

solução!

Oi Isabel

O problema é que a sua classe TestaEmpresa está dentro da classe Empresa, repare nas chaves! Isso vai ficar mais claro se você formatar com tabs/espaços o código todo.

Você precisa antes fechar a classe Empresa antes de abrir a outra

Obrigado Paulo. Não havia percebido. Inclusive achei estranho tantos colchetes.