A NullReferenceException
бросается, когда мы пытаемся получить доступ к свойствам нулевого объекта или когда значение строки становится пустым, и мы пытаемся получить доступ к строковым методам.
Например:
string str = string.Empty;
str.ToLower(); // throw null reference exception
Public Class Person {
public string Name { get; set; }
}
Person objPerson;
objPerson.Name /// throw Null refernce Exception
Это должно сделать это (может потребоваться дополнительные элементы classpath с помощью переключателя командной строки -cp
):
javac Support/*.java Me/*.java Wrapers/*.java
Но если ваш процесс сборки становится более сложным (и он будет!), вы должны посмотрите на использование Apache Ant для автоматизации сборки.
Во многих случаях Ant является излишним. Просто используйте BAT-файл, если вы находитесь в Windows или сценарии оболочки (sh-файл), если вы находитесь в Linux. Вы можете создать текстовый файл, который включает в себя все ваши команды javac и просто запустить этот файл, когда вы хотите его построить.
Например, я использую следующий файл bat для создания одного из моих приложений:
@echo off
echo Building Shazaam...
del classes\com\aepryus\shazaam\*.* /q
del classes\com\aepryus\shazaam\engine\*.* /q
del classes\com\aepryus\shazaam\domain\*.* /q
del classes\com\aepryus\shazaam\persist\*.* /q
del classes\com\aepryus\shazaam\view\*.* /q
del classes\com\aepryus\shazaam\task\*.* /q
del classes\com\aepryus\shazaam\action\*.* /q
del classes\com\aepryus\shazaam\controller\*.* /q
javac src\com\aepryus\shazaam\*.java -classpath \lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar; -d classes
javac src\com\aepryus\shazaam\engine\*.java -classpath \lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\domain\*.java -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\persist\*.java -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\view\*.java -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\task\*.java -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\action\*.java -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\controller\*.java -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepRPC.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
cd classes
jar cf ..\war\WEB-INF\lib\Shazaam.jar .
cd..
echo Complete
Если вам действительно нужно просто использовать javac и стандартные команды UNIX, вы могли бы это сделать:
find src -name \*.java -print0 | xargs -0 javac -d classes
Для таких задач вам следует использовать такие инструменты построения, как Maven или Ant .
На начальных этапах, когда проект не очень сложный, вы может использовать следующую строку для компиляции с соответствующим классом классов (как предложено @Michael):
javac Support/*.java Me/*.java Wrapers/*.java
Реальный ответ: javac -d (места, где должны быть построены и размещены классы) -sourcepath (источник пакета в корневом каталоге) -cp (путь к классам зависимостей, которые могут снова быть папкой классов, в которой классы строятся и хранится) полное имя java-файла.
Ex javac -d classes -sourcepath src -cp classes src \ com \ test \ FirstSample.java
FirstSample.java содержит основной метод. Структура Pacjage, упомянутая ниже.
Перед компиляцией HomeApp --src ------ com \ test \ FirstSample.java (Первый пример с использованием FirstPojo.java) ------ com \ test \ FirstPojo.java --classes
После компиляции HomeApp --src ------ com \ test \ FirstSample.java (FirstSample.java с использованием FirstPojo.java) ------ com \ test \ FirstPojo.java --classes ------ com \ test \ FirstSample.class (FirstSample.class с использованием FirstPojo.class) ------ com \ test \ FirstPojo.class