Файлы компиляции JavaEE

Я чувствую себя четырехлетним ребенком, у которого есть ломтик хлеба с пб и ломтик с желе, и он спрашивает, как сделать бутерброд..
Мне поручили поддерживать веб-сайт javaEE, который был создан наша материнская компания, которая больше не поддерживает нас. Я относительно новичок в JavaEE и пытаюсь выяснить, как перекомпилировать файлы, которые необходимо изменить, из корневой папки сайта.
Я скачал NetBeans, чтобы помочь мне с этим, но все еще могу' т понять это. Моя проблема в том, что java-файлы не могут найти какие-либо пакеты и ресурсы, от которых они зависят. Насколько мне известно, ресурсы есть... хотя я вижу некоторые пакеты, начинающиеся с "com." и "javax.", и я не вижу "com" или " javax» в любом месте. Я считаю, что моя проблема как-то связана с настройкой пути к классу в свойствах проекта в NetBeans. Я пробовал это, но либо я делаю это неправильно, либо он не работает. Вся эта компиляция Java настолько чужда мне, что было бы здорово, если бы кто-нибудь мог направить меня в правильном направлении компиляции этого веб-сайта.
Я опубликовал выборку иерархии папок веб-сайта, чтобы помочь:

иерархия сайта

Я пытаюсь скомпилировать файл RecordAdd.java здесь конкретно в данный момент. Некоторые из пакетов, которые он пытается импортировать, происходят из его родительской папки asp или папки, в которой он находится, easp. Файл также пытается import com.icesoft.faces.component.*;, где '*' состоит из нескольких разных импортов родительских пакетов. Я не вижу папку com, как я уже упоминал, но вижу файлы icefaces.jar в папке lib в папке WEB-INF. Я попытался поместить эти папки в путь к классам категории NetBeans Library-Compile, но это ничего не дало.
Я что-то делаю не так, возможно, это базовые знания о компиляции Java-проектов, но я просто не понял. Я очень ценю любую помощь, только, пожалуйста, не будьте слишком суровы. Спасибо!


person Nick Rolando    schedule 17.06.2011    source источник
comment
javax предназначен только для оракула, поэтому вы не увидите его в своих пакетах.   -  person Abdullah Jibaly    schedule 17.06.2011
comment
Тогда какова цель этого импорта в файле кода?   -  person Nick Rolando    schedule 17.06.2011
comment
Существует множество библиотек, предоставляемых Sun/Oracle, которые поставляются с java, и вы должны импортировать их, чтобы получить к ним доступ.   -  person Abdullah Jibaly    schedule 17.06.2011
comment
Аналогично вашему пакету com.icesoft... импорт ссылается на классы в том jar-файле, который вы видите в WEB-INF/lib.   -  person Abdullah Jibaly    schedule 17.06.2011
comment
По сути, вы можете импортировать все, что у вас есть в вашем пути к классам. По умолчанию все библиотеки Java находятся в вашем пути к классам, а в веб-приложениях все в классах WEB-INF/lib и WEB-INF/ обычно находится в вашем пути к классам.   -  person Abdullah Jibaly    schedule 17.06.2011
comment
Вы уже импортировали проект в netbeans? Если проект был создан в netbeans и был успешно импортирован в netbeans, я думаю, вам не нужно компилировать файл Java, чтобы увидеть, есть ли с ним какие-либо проблемы, netbeans автоматически обнаруживает и устанавливает значок ошибки в файле Java. у которого есть проблема, под деревом проекта.   -  person Bhesh Gurung    schedule 17.06.2011


Ответы (3)


Это должно быть просто, если проект был создан в netbeans. Просто перейдите в Файл -> Открыть проект. Перейдите туда, где находится проект. Вы узнаете, является ли папка проектом, потому что netbeans распознает ее, и вместо обычного значка папки отображается другой значок. После того, как вы откроете свой проект, вы можете щелкнуть правой кнопкой мыши скомпилировать проект. Вы не используете java-компилятор самостоятельно для компиляции java-файлов в проекте. Компиляция и сборка выполняются такими инструментами, как ant, maven... Это автоматизировано.

person Bhesh Gurung    schedule 17.06.2011
comment
Первоначально он был скомпилирован с использованием netbeans, но я считаю, что разработчики использовали файлы netbeans для производства. Я сделал Open Project и открыл его, и netbeans создал для него свои собственные файлы. Я пытаюсь создать новый файл .class, скомпилировав файл .java. В netbeans я создаю проект, и он говорит, что он работает нормально, но я не могу его запустить, и файл .class не выводится. Также, когда я открываю файл в редакторе, он показывает мне все ошибки, что не может найти пакеты - person Nick Rolando; 18.06.2011
comment
Чтобы скомпилировать только RecordAdd.java, начните с нового проекта веб-приложения в netbeans. Затем скопируйте все содержимое папки src (тот, что в самом низу изображения) в папку src вашего веб-проекта в среде netbeans. Затем щелкните правой кнопкой мыши проект -> свойства -> библиотеки -> нажмите «Добавить банку» и перейдите к папке lib, которая находится в каталоге WEB-INF на вашем изображении, и выберите все банки (или сделайте один за другим, если хотите знать, какие банки необходимы для компиляции этого конкретного файла). Все, что вы видите в папке классов на картинке, создается после сборки проекта. - person Bhesh Gurung; 18.06.2011

Попробуйте выяснить, какую IDE использовали исходные разработчики. Я вижу папку nbproject с указанием Netbeans (если только она не была создана вами), поэтому попробуйте открыть проект в Netbeans как проект Java EE. Я также попытался бы открыть его в Eclipse, он имеет хорошие возможности импорта и иногда может самостоятельно определить путь к классам. Загрузите версию Eclipse для Java EE и установите проект веб-инструментов. Вы также можете попробовать посмотреть, есть ли файл сборки, который скомпилирует и сгенерирует для вас файл войны (что-то вроде build.xml).

person Abdullah Jibaly    schedule 17.06.2011
comment
Первоначальные разработчики использовали NetBeans, хотя nbproject был создан мной. У меня есть файл build.xml. Вы имеете в виду скомпилировать его с помощью javac.exe, как если бы я был файлом .java? - person Nick Rolando; 17.06.2011
comment
Нет, вероятно, будет сложно скомпилировать его с помощью javac из-за всех зависимостей пути к классам. Вы можете установить ant (или использовать его из Netbeans) для компиляции веб-приложения. Должна быть цель, которая компилирует и создает военный файл. - person Abdullah Jibaly; 17.06.2011
comment
netbeans скомпилировал файл build.xml нормально, но я нигде не использую файл .war. На самом деле, весь проект строится нормально, но не запускается и не выдает никаких файлов .class (см. мой комментарий к ответу jpredham) - person Nick Rolando; 18.06.2011
comment
Будет ли больше смысла, если я скажу, что они развернули это на нашем сервере (без каких-либо файлов или ссылок netbean), и я скопирую и вставлю его с сервера на свой локальный хост? Это старое приложение, и материнская компания находится на Тайване. - person Nick Rolando; 18.06.2011
comment
Если все, что вам нужно, это скомпилированный файл класса, вам, вероятно, не нужно ничего создавать. Netbeans автоматически сохраняет скомпилированные файлы .class в каталоге сборки для проекта (перейдите к свойствам проекта, чтобы узнать, где они находятся). Обычно вы можете увидеть их, используя вид навигатора или просто используя проводник Windows. Вы не увидите их в обычном виде проекта (он показывает только исходные файлы). - person Abdullah Jibaly; 18.06.2011
comment
Re: копирование и вставка с сервера, это не помогает, за исключением того, что это означает, что это не обязательно та же структура проекта, что и в Netbeans, хотя я готов поспорить, что они просто скопировали и вставили все, что у них было в проекте ASP, в tomcat/glassfish или любой другой контейнер. - person Abdullah Jibaly; 18.06.2011
comment
Папка сборки пуста :( и да, я уверен, что они просто скопировали необходимые файлы из своего проекта netbeans на рабочий сервер. У вас есть другие предложения? - person Nick Rolando; 18.06.2011
comment
Судя по приведенному выше снимку экрана, похоже, что проект настроен на размещение файлов .class рядом с исходными файлами .java. Если вы удалите или переместите файл .class, вы должны увидеть, что он сгенерирован заново. Это то, что вам нужно? - person Abdullah Jibaly; 18.06.2011
comment
Да, это! Как вы можете видеть на рисунке выше, я удалил файл «RecordAdd.class» в надежде на это, но он не перекомпилирует файл и выдает файл .class. Все, что мне нужно, это новый файл .class, скомпилированный из моего java-файла. Но мне нужно, чтобы ссылки работали, чтобы скомпилировать его. - person Nick Rolando; 18.06.2011
comment
Что вам нужно сделать, так это рассказать нам, на что Netbeans жалуется, потому что он явно неправильно компилирует проект. Вы также можете увидеть ошибки в окне списка задач. - person Abdullah Jibaly; 18.06.2011
comment
Произошла ошибка во время развертывания: – Nicklamort 2 часа назад Нет установленного контейнера, способного обрабатывать этот домен приложения2. Дополнительные сведения см. в server.log. C:\Program Files\glassfish-3.1\glassfish\domains\domain2\nbproject\build-impl.xml:260: модуль не развернут. на org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment‌​.java:187) на org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:106) на org. apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) в sun.reflect.GeneratedMethodAccessor170.invoke(неизвестный источник) - person Nick Rolando; 18.06.2011
comment
Перед процессом развертывания должны быть ошибки (ошибки компиляции). Вы не видите никаких красных флажков в представлении проекта? - person Abdullah Jibaly; 18.06.2011
comment
Возможно, вы захотите попробовать Eclipse, как я упоминал ранее, вам нечего терять, если вы не получаете достаточно отчетов об ошибках с помощью netbeans. - person Abdullah Jibaly; 18.06.2011
comment
Да, в основном 95% операторов импорта выдают ошибку, потому что не могут найти указанный символ или пакет просто не существует. - person Nick Rolando; 18.06.2011
comment
На что обратить внимание: ваши классы (например, RecordAdd) находятся в папке с именем easp внутри папки с именем asp в WEB-INF. Обычно это должно соответствовать объявлению пакета package asp.easp. Это то, что вы видите в java-файле? - person Abdullah Jibaly; 18.06.2011

Импорт существующих проектов в netbeans — отличный способ потерять полдня. Я предполагаю, что, поскольку есть каталог nbproject, он был создан с помощью netbeans, что должно дать вам преимущество.

  1. В мастере «Открыть проект» верхний уровень вашего приложения (не обязательно исходный код) должен иметь дружественный значок земного шара для веб-приложения (.war) или треугольник для приложения EE (.ear). Откройте треугольник, если он есть. Веб-приложения могут быть упакованы с приложениями EE через netbeans, поэтому, если веб-приложение, которое вы пытаетесь скомпилировать, принадлежит одному из них, некоторые свойства сборки могут быть связаны с Это.

  2. Глядя на файл nbproject/build-impl.xml, вы должны подсказать, где находится папка с вашими библиотеками. Убедитесь, что этот путь совпадает в свойствах вашего проекта под заголовком "Библиотеки". Эти библиотеки могут быть общими для проектов и, следовательно, могут быть вне структуры каталогов этих проектов и ссылаться или быть родными только для этого проекта, и в этом случае jar-файлы копируются в вашу папку lib.

  3. Могут быть дополнительные справочные или серверные проблемы, которые netbeans обнаруживает (и выдает ничтожное сообщение об ошибке), которые можно найти в контекстном меню проекта в разделе «Решить справочные проблемы» или «Решить отсутствующий сервер». В netbeans проекты создаются для серверов, на которых они выполняются, прямо в среде IDE. Убедитесь, что у вас есть серверы, которые вы хотите настроить, в разделе Инструменты-> Серверы, а затем убедитесь, что сервер связан в свойствах вашего проекта в разделе «Выполнить».

Это может не решить всех ваших проблем, но это хорошее начало. Удачи!

person jpredham    schedule 17.06.2011
comment
Файлы nbproject и build.xml были созданы мной, когда я импортировал проект на свой локальный хост. Я вижу файл .ear, но полагаю, что он был создан мной, а не оригинальной компиляцией. - person Nick Rolando; 18.06.2011
comment
Вы не увидите файл .ear, если он не был успешно скомпилирован. - person jpredham; 18.06.2011
comment
Когда я его строю, он строится нормально, но не выдает файл .class для файла .java, который я пытаюсь изменить. Кроме того, когда я открываю файл .java в редакторе, он показывает мне кучу ошибок всех пакетов, которые он пытается импортировать, но не может. Кроме того, даже если он отлично строится, я не могу его запустить: во время развертывания произошла ошибка: - person Nick Rolando; 18.06.2011
comment
Нет установленного контейнера, способного обрабатывать этот домен приложения2. Дополнительные сведения см. в server.log. C:\Program Files\glassfish-3.1\glassfish\domains\domain2\nbproject\build-impl.xml:260: модуль не развернут. в org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:187) в org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:106) в org.apache .tools.ant.UnknownElement.execute(UnknownElement.java:291) в sun.reflect.GeneratedMethodAccessor170.invoke(неизвестный источник).... - person Nick Rolando; 18.06.2011
comment
Если корпоративный проект строится нормально, а в исходном коде, который вы пытаетесь отредактировать/собрать, отсутствуют библиотеки, то этот исходный код, скорее всего, не упакован в корпоративный архив. Проверьте, какие компоненты упакованы, в свойствах проекта в разделе Сборка -> Упаковка. - person jpredham; 18.06.2011
comment
Пример. У меня есть корпоративное приложение ClientMetricsAPI. В этот архив упакован проект ClientMetricsAPI-war, содержащий код для веб-приложения. Когда я создаю корпоративное приложение, оно создает веб-приложение, поскольку оно является зависимостью, создает файл WAR и упаковывает его в файл EAR. - person jpredham; 18.06.2011
comment
В порядке. Имя файла архива: Domain2.ear; Исключаемый контент: */.java,*/.form,**/.nbattrs; И нечего в дополнительный контент включать. - person Nick Rolando; 18.06.2011
comment
Я не знаю, что это значит... эта java штука мне чужда. Я знаю код Java, но понятия не имею, как связывать вещи, компилировать проекты или что-то в этом роде. Не могли бы вы заглушить это для меня? - person Nick Rolando; 18.06.2011
comment
Извините, если я расплывчат, здесь есть два типа проектов Java EE. Тип предприятия и веб-тип. Оба имеют свои собственные файлы сборки, исходники и библиотеки. Корпоративные проекты обычно не имеют собственных источников и используются для объединения нескольких проектов и библиотек. Проект Domain2 на самом деле еще не содержит проект, к которому принадлежит ваш источник. Вы должны попытаться найти веб-приложение, содержащее ваш исходный код (может быть, оно называется ASP?), исправить импорт в ЭТОТ проект, добавив необходимые библиотеки, а затем добавить его в список архивов Domain2. - person jpredham; 18.06.2011
comment
Я не знаю, как добавить библиотеки, это моя проблема. Я перепробовал все, что мог придумать... добавление всевозможных библиотек в библиотеку в свойствах проекта. Я заменил весь проект только подпапкой ASP, сделал то же самое и вижу те же результаты :( - person Nick Rolando; 18.06.2011