(Resolvido) Problema Pacote

2 respostas
C

Olá,

Estou fazendo um curso onde ensina fazer um sistema de estoque no curso ensinou criar um pacote chamado utilitarios onde foi salvo o código para mostrar a data na tela principal que fica no pacote principal do código sendo que da o seguinte erro:

Alguem pode me ajudar?

o.b.s -> quando coloco o arquivo que fica em no pacote utlitarios “data.java” no pacote principal o código fuinciona 100%

run:

Exception in thread AWT-EventQueue-0 java.lang.RuntimeException: Uncompilable source code - dia_semana is not public in utilitarios.data; cannot be accessed from outside package

at TelaPrincipal.(TelaPrincipal.java:47)

at TelaPrincipal$3.run(TelaPrincipal.java:232)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)

at java.awt.EventQueue.access$000(EventQueue.java:101)

at java.awt.EventQueue$3.run(EventQueue.java:666)

at java.awt.EventQueue$3.run(EventQueue.java:664)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

label_data.setText(mostra_data.dia_semana+" “+mostra_data.dia+” de “+mostra_data.mes+”, "+mostra_data.ano);

Esse é o código do arquivo data.java que fica no pacote utilitarios

package utilitarios;

import java.util.Date;

public class data

{

String mes, dia, ano, dia_semana;
public void le_data()
{
    Date data = new Date();
    //mes = ""+data.getMonth(); //0 11
    dia = ""+data.getDate();
    ano = ""+(1900 + data.getYear());
    dia_semana = ""+data.getDay();
    
    switch(data.getDay())
    {
        case 0: dia_semana = "Domingo";break;
        case 1: dia_semana = "Segunda";break;
        case 2: dia_semana = "Terça";break;
        case 3: dia_semana = "Quarta";break;
        case 4: dia_semana = "Quinta";break;
        case 5: dia_semana = "Sexta";break;
        case 6: dia_semana = "Sábado";break;          
    }
    
    switch(data.getMonth())
    {
        case 0: mes = "Janeiro";break;
        case 1: mes = "Fevereiro";break;
        case 2: mes = "Março";break;
        case 3: mes = "Abril";break;
        case 4: mes = "Maio";break;
        case 5: mes = "Junho";break;
        case 6: mes = "Julho";break;
        case 7: mes = "Agosto";break;
        case 8: mes = "Setembro";break;
        case 9: mes = "Outubro";break;
        case 10: mes = "Novembro";break;
        case 11: mes = "Dezembro";break;
    }
       
       
}

}

2 Respostas

Bruno_Cunha

Olá.

Essa é uma questão de modificadores de acesso…
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

Você não especificou nenhum modificador para as variáveis:

String mes, dia, ano, dia_semana;

Então, por padrão, elas definem um modificador default ou package, onde só classes do mesmo pacote conseguem enxergar a variável.
Se quiser que a variável dia_semana seja utilizada por uma classe em outro pacote, você deve colocar o modificador “public”.

public String mes, dia, ano, dia_semana;

Ou você pode fazer encapsulamento… Deixar sua variável como “private”, e utilizar métodos para acessá-la (get e set), que é o padrão no Java.

private String diaSemana; 

public String getDiaSemana() {
     return diaSemana;
}

public void setDiaSemana(String diaSemana) {
     this.diaSemana = diaSemana;
}

Espero ter ajudado!

C

Resolvido Bruno muito obrigado mesmo.

Criado 10 de março de 2012
Ultima resposta 11 de mar. de 2012
Respostas 2
Participantes 2