Я попытался импортировать проект J2EE (JSF + Primefaces) из IntelliJ в Eclipse и Gradle.В Eclipse я создал новый проект Gradle и переместился в папку src, все исходные файлы из проекта IntelliJ.Конечно, я создал папки WebContent и WEB-INF и папку extra libs (для моей внешней библиотеки JAR).
Я создал файл build.gradle:
apply plugin: 'java'
apply plugin: 'eclipse-wtp' // The correct plug-in!
apply plugin: 'war'
project.webAppDirName = 'WebContent'
// In this section you declare where to find the dependencies of your project
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
dependencies {
// This dependency is exported to consumers, that is to say found on their compile classpath.
compile group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet-core', version: '2.26-b03'
compile group: 'org.glassfish.jersey.media', name: 'jersey-media-multipart', version: '2.26-b03'
compile group: 'org.primefaces', name: 'primefaces', version: '6.2'
compile group: 'org.postgresql', name: 'postgresql', version: '42.1.1'
//JSF
compile group: 'com.sun.faces', name: 'jsf-api', version: '2.2.18'
compile 'org.gdal:gdal:2.1.0'
compile 'org.apache.clerezza.ext:org.json.simple:0.4'
compile 'commons-io:commons-io:2.5'
compile fileTree(include: ['*.jar'], dir: 'libs')
// This dependency is used internally, and not exposed to consumers on their own compile classpath.
implementation 'com.google.guava:guava:23.0'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}
Я создалфайл web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<context-param>
<param-name>com.sun.faces.forceLoadConfiguration</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>primefaces.FONT_AWESOME</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>adamantium</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/primefaces-adamantium.taglib.xml</param-value>
</context-param>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
<url-pattern>*.jsf</url-pattern>
<url-pattern>/faces/*</url-pattern>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
и face-config.xml
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.3" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd">
<component>
<component-type>org.primefaces.component.AdamantiumMenu</component-type>
<component-class>org.primefaces.adamantium.component.menu.AdamantiumMenu</component-class>
</component>
<render-kit>
<renderer>
<component-family>org.primefaces.component</component-family>
<renderer-type>org.primefaces.component.AdamantiumMenuRenderer</renderer-type>
<renderer-class>org.primefaces.adamantium.component.menu.AdamantiumMenuRenderer</renderer-class>
</renderer>
</render-kit>
</faces-config>
После проверки кода я создал файл war без каких-либо предупреждений / ошибок.Я развернул файл war на Tomcat 8, но когда я пытаюсь запустить WebApp, я получаю сообщение об ошибке:
dic 06, 2018 18:43:32 javax.faces.FactoryFinderInstance copyInjectionProviderFromFacesContext GRAVE: Невозможно выполнитьполучить InjectionProvider из времени инициации FacesContext.В этом контейнере реализован SPI Mojarra Injection?dic 06, 2018 18:43:32 javax.faces.FactoryFinderInstance getFactory GRAVE: Приложение не было должным образом инициализировано при запуске, не удалось найти Factory: javax.faces.context.FacesContextFactory.Попытка найти резервную копию.
WebApp, созданный из проекта IntelliJ, работает нормально, но я не знаю, почему он не работает, когда он создается проектом Eclipse.Может быть, я что-то забыл, но я не знаю, что я забыл ...