2014-11-26 1 views
0

Я написал приложение на своем компьютере, используя CDI в качестве бэк-компонента для jsf, приложение работает полностью нормально.Импорт CDI не может быть разрешен в Eclipse

Теперь я настраиваю все на новый компьютер, установленную стеклянную рыбку 4.1, устанавливаю eclipse kepler, помещая установленный jre как jdk7 из папки Glassfish.

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

Теперь я попытался взять проект с моего компьютера и импортировал его на новый компьютер. затмение на новом компьютере не распознает import javax.enterprise.context.SessionScoped;, дающее ошибку компилятора, что эта аннотация недоступна.

Импорт javax.enterprise.context не может быть решена

оно не признает javax.enterprise.context.* вообще. как CDI недоступен. Я использую JDK 7, который содержит JSR 346, поэтому я полностью смущен тем, что может быть проблемой.

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

enter image description here

+0

Звучит странно. Пожалуйста, добавьте исключение stacktrace в вопрос. – unwichtich

ответ

0

Если я должен был угадать, ваши файлы .project и .classpath указывают на местоположения JAR, которые относятся к вашему старому компьютеру.

Вот почему люди любят создавать такие инструменты, как maven или gradle, вы можете забрать и переименовать проект; он разрешит все зависимости для вас.

+0

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

+1

. Вы можете нажать «Исправить настройку проекта ...», и он также будет работать для вас. –

0

Возможно, вы используете плагин GlassFish Tools для Eclipse? Я обнаружил, что контейнер классов GlassFish System Libraries, который создается неявным образом этим плагином и который добавляется ко всем проектам, которые указывают сервер GlassFish в качестве среды выполнения, пропускает cdi-api.jar. Здесь находится пакет javax.enterprise.context.* (и многие другие).

Таким образом, я мог бы исправить это, добавив cdi-api.jar в качестве внешней банки в путь сборки. После этого вы можете получить предупреждение, например Classpath entry [...]/cdi-api.jar will not be exported or published. Runtime ClassNotFoundExceptions may result., которое можно устранить с помощью быстрого исправления до Exclude the associated raw classpath entry from the set of potential publish/export dependencies. Очевидно, что JAR-файл уже содержится в папке модулей GlassFish.

Возможно, эта проблема возникает только с веб-профилем GlassFish, по крайней мере, это то, что я использую.

1

Eclipse не импортировал все стеклянные банки, поэтому вам необходимо: Щелкните правой кнопкой мыши по имени проекта, наберите путь, настройте путь сборки, в разделе «Библиотеки» Нажмите «Добавить внешние банки», перейдите к тому месту, где вы извлекли Glassfish и импортируете все банки который существует в: glassfish4 \ glassfish \ modules и все вспомогательные каталоги 2, подобный endoresed.

Это исправит проблему с CDI и другими материалами. JAX-RS

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