почему это не компилировать? - PullRequest
0 голосов
/ 22 июня 2010

У меня есть эти файлы:

c:\MY_SOURCES\AClient.java
c:\MY_SOURCES\Pluto.java
c:\MY_SOURCES\com\Classes\Pluto.class

В AClient.java У меня есть

import com.Classes.*;
Pluto p = new Pluto();

Когда я компилирую файл с:

javac -classpath . AClient.java

компиляторомскажите мне, что он не может получить доступ к Pluto как неверный исходный файл Pluto.java ... но если я переместу Pluto.java из c:\MY_SOURCES, он скомпилируется.

Ответы [ 3 ]

2 голосов
/ 22 июня 2010

Ваша исходная папка должна отражать структуру вашего пакета.Если это не так, то javac запутывается.В идеале ваша скомпилированная папка .class должна находиться в корне, отличном от вашей исходной папки.

Итак

c:\MY_SOURCES\AClient.java (assuming in the default package)
c:\MY_SOURCES\com\Classes\Pluto.java

c:\MY_COMPILED\com\Classes\Pluto.class

javac -classpath=c:\MY_COMPILED -d 
c:\MY_COMPILED\ c:\MY_SOURCES\AClient.java
1 голос
/ 22 июня 2010

Просто повторяя ...

C:\MY_SOURCES\AClient.java
C:\MY_SOURCES\com\Classes\Pluto.java

Предполагая, что AClient.java содержит ...

import com.Classes.*;

public class AClient {
   Pluto p = new Pluto();
}

Эта компиляция работает

C:\MY_SOURCES\javac *.java
0 голосов
/ 22 июня 2010

Возможно, вы ввели ошибку в файл Pluto.Когда вы пытаетесь скомпилировать AClient, он также попытается скомпилировать Pluto (поскольку он используется AClient) и выдаст ошибку.Если вы удалите Pluto.java, у вас будет файл класса из предыдущей (успешной) компиляции, и он использует его, и он работает.Вы должны проверить Pluto.java и посмотреть, компилируется ли он сам по себе или есть ли другие проблемы с ним.

...