2016-10-15 3 views
0

Я следую упражнению 1.2 подготовки к экзамену Oracle Java SE 8, который поручает мне создать основной класс GreetingsUniverse и три класса, которые будут инициализированы основным классом; Mars, Earth и Venus.Компиляция java-кода не может найти исходные файлы

У меня есть com каталог, хранящуюся на месте: C:\Users\Chris\Documents\JavaMM

package com.ocajexam.tutorial; 

import com.ocajexam.tutorial.planets.Earth; 
import com.ocajexam.tutorial.planets.Venus; 
import com.ocajexam.tutorial.planets.Mars; 

public class GreetingsUniverse 
{ 
    public static void main (String[] args) 
    { 
     System.out.println("Greetings, Universe!"); 
     Earth e = new Earth(); 
     Mars m = new Mars(); 
     Venus v = new Venus(); 
    } 
} 

package com.ocajexam.tutorial.planets; 

public class Mars 
{ 
    public Mars() 
    { 
     System.out.println("Hello from Mars!"); 
    } 
} 

package com.ocajexam.tutorial.planets; 

public class Earth 
{ 
    public Earth() 
    { 
     System.out.println("Hello from Earth!"); 
    } 
} 

package com.ocajexam.tutorial.planets; 

public class Venus 
{ 
    public Venus() 
    { 
     System.out.println("Hello from Venus!"); 
    } 
} 

экс Цель ercise - определить аргументы командной строки, необходимые для компиляции кода.

У меня есть файл GreetingsUniverse Java, хранящийся в com\ocajexam\tutorial\ и магазин планет в com\ocajexam\tutorial\planets

Я пробовал различные решения без успеха:

javac -d . -cp com\ocajexam\tutorial\planets com\ocajexam\tutorial\GreetingsUniverse.java 

javac -d . -cp com com\ocajexam\tutorial\GreetingsUniverse.java 

я получаю следующее сообщение об ошибке:

C:\Users\Chris\Documents\JavaMM>javac -d . -cp com com\ocajexam\tutorial\GreetingsUniverse.java 
com\ocajexam\tutorial\GreetingsUniverse.java:8: error: cannot find symbol 
       Earth e = new Earth(); 
       ^
    symbol: class Earth 
    location: class GreetingsUniverse 
com\ocajexam\tutorial\GreetingsUniverse.java:8: error: cannot find symbol 
       Earth e = new Earth(); 
          ^
    symbol: class Earth 
    location: class GreetingsUniverse 
com\ocajexam\tutorial\GreetingsUniverse.java:9: error: cannot find symbol 
       Mars m = new Mars(); 
       ^
    symbol: class Mars 
    location: class GreetingsUniverse 
com\ocajexam\tutorial\GreetingsUniverse.java:9: error: cannot find symbol 
       Mars m = new Mars(); 
          ^
    symbol: class Mars 
    location: class GreetingsUniverse 
com\ocajexam\tutorial\GreetingsUniverse.java:10: error: cannot find symbol 
       Venus v = new Venus(); 
       ^
    symbol: class Venus 
    location: class GreetingsUniverse 
com\ocajexam\tutorial\GreetingsUniverse.java:10: error: cannot find symbol 
       Venus v = new Venus(); 
          ^
    symbol: class Venus 
    location: class GreetingsUniverse 
6 errors 

Кто-нибудь знает, где я ошибаюсь?

Я также попытался следующие, производит другое сообщение об ошибке:

C:\Users\Chris\Documents\JavaMM>javac -d . com\ocajexam\tutorial\planets\Earth.java;com\ocajexam\tutorial\planets\Mars.java;com\ocajexam\tutorial\planets\Venus.java com\ocajexam\tutorial\GreetingsUniverse.java 

создавшего эту ошибку:

javac: file not found: com\ocajexam\tutorial\planets\Earth.java;com\ocajexam\tutorial\planets\Mars.java;com\ocajexam\tutorial\planets\Venus.java 
Usage: javac <options> <source files> 
use -help for a list of possible options 

Файлы, безусловно, есть, если я реж на каталог planets я могу см. их там:

Directory of C:\Users\Chris\Documents\JavaMM\com\ocajexam\tutorial\planets 

16/10/2016 11:33 <DIR>   . 
16/10/2016 11:33 <DIR>   .. 
15/10/2016 21:48    135 Earth.java 
15/10/2016 21:48    132 Mars.java 
15/10/2016 21:48    135 Venus.java 

Обновление: После дальнейшей отладки это просто получая незнакомый ..

Я пытаюсь собрать только файлы планеты, используя первую половину команды:

javac -d . -cp com\ocajexam\tutorial\planets\*.java 

Когда я просматриваю каталог планеты, только два из планеты собраны. Когда я удаляю класс java, который не компилируется, скомпилируется только 1 из файлов!

Когда я использую ту же команду, указав файл Java Я хочу, чтобы скомпилировать:

javac -d . -cp com\ocajexam\tutorial\planets\Venus.java 

Я получаю следующее сообщение об ошибке:

javac: no source files 
Usage: javac <options> <source files> 
use -help for a list of possible options 

Я не могу сделать какой-либо смысл, потому что это Venus.java был одним из файлов, которые скомпилировались, когда я запустил команду компиляции /*.java для обнаружения любых java-файлов в каталоге

+0

Ваш путь к классу '.', а не' com'. – tkausl

+0

Я также пробовал это и получал ту же ошибку. – algorhythm

+1

'Venus.java', например, должен быть его собственным файлом. Форматирование вашего вопроса не делает это очень ясным. –

ответ

-1

Все файлы .java нас ed должно быть на пути к классам. т.е. javac -d . -cp com com\ocajexam\tutorial\*.java com\ocajexam\tutorial\planets\*.java

Попробуйте сделать: javac -d. -cp com com/ocajexam/tutorial/GreetingsUniverse.java com/ocajexam/учебник/планеты/Earth.java com/ocajexam/учебник/планеты/Mars.java com/ocajexam/учебник/планеты/Venus.java

+0

Я пробовал это, и по-прежнему получаю ту же ошибку. – algorhythm

+0

У вас не может быть исходных файлов на пути к классам вообще, а в локаторах классов необходимо НЕ включать пакетную часть пути, потому что это добавляется автоматически. –

+0

Per: docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html Если параметр -sourcepath не указан, путь к пользовательскому классу также выполняется поиск исходных файлов. –

0

Вы необходимо сначала скомпилировать все классы. javac только компилирует ваш основной класс. Используйте javac -cp /path/to/file/*.java. Звездочка (*.java) означает скомпилировать все классы java в папке.

+0

Это компилирование этих файлов нормально, но я все равно получаю ту же ошибку, когда пытаюсь скомпилировать основной класс. – algorhythm

+0

Вам не нужно вручную компилировать каждый класс, если он находится в пути к классам. Компилятор достаточно умен, чтобы включить другие классы автоматически. –

+0

Тогда я не понимаю, почему это порождает ошибку, говоря, что не может найти их – algorhythm

 Смежные вопросы

  • Нет связанных вопросов^_^