2013-06-27 6 views
0

У меня проблема с компиляцией этих java-файлов. У меня есть класс MeterMovementService.java и интерфейс MeterMovementServiceMBean.java. Класс реализует этот интерфейс. И я сначала скомпилировал интерфейс. Оба класса и интерфейса находятся в одном пакете. Но когда я пытаюсь скомпилировать класс он дает ошибку, как:java setting classpath для интерфейса реализации класса

MeterMovementService.java:2: error: cannot find symbol 
public class MeterMovementService implements MeterMovementServiceMBean 
              ^
    symbol: class MeterMovementServiceMBean 
1 error 

Вот код для класса MeterMovementService.java

Мой класс does'nt есть dependency.It только реализует интерфейс.

public class MeterMovementService implements MeterMovementServiceMBean { 
    private String message = "Sorry no message today"; 
    public String getMessage(){ 
     return message; 
    } 
    public void setMessage(String message){ 
     this.message = message; 
    } 
    public void printMessage(){ 
     System.out.println(message); 
    } 
    public void start() throws Exception{ 
     System.out.println(">>>>Starting with message=" + message); 
    } 
    public void stop() throws Exception{ 
     System.out.println(">>>>Stopping with message=" + message); 
    } 
} 
+1

как вы скомпилировали свой интерфейс? –

+0

При компиляции необходимо указать путь к классам (содержащий классы, на которые зависят классы). –

+0

Можем ли мы увидеть код? –

ответ

1

Необходимо, чтобы файлы классов размещались под папкой пакета. Напр. если ваш интерфейс определен в пакете - pkg1, ваш файл класса должен быть под pkg1 вложенной папкой.

Ваша структура каталогов должна выглядеть так:

srcfolder -+ 
      +- pkg1 -+- MeterMovementServiceMBean.class 
      |  +- MeterMovementService.class 
      | 
      +- MeterMovementService.java 
      +- MeterMovementServiceMBean.java 

Либо вы должны переместить файлы классов вручную, или даже лучше, вы можете скомпилировать файлы .java, используя следующую команду, чтобы ручку компилятора все это для вас:

javac -d . MeterMovementServiceMBean.java 
+0

У меня нет пакета. весь мой код находится непосредственно под srcfolder. –

+0

@winstonsanker. Любая проблема? Я не понимаю ваш комментарий. –

+0

Я думал, вы сказали, и ваш класс, и интерфейс находятся в одном пакете? –

1

javac -d . *.java компилирует все Java-файлы в текущем каталоге и упаковывает скомпилированные файлы классов в соответствии с их структурой пакета.