2014-09-29 61 views
1

我有一個基本程序,其中包含一個簡單實體,用於爲Web服務調用設置沒有屬性的服務生成器。我在本地取決於javax.ws.rs-api-2.0.1.jar中包含的javax.ws.rs庫。服務生成器不會編譯依賴於IVY jar的代碼

在IDE中,代碼不顯示任何錯誤。我可以在項目瀏覽器窗口中看到常春藤依賴項。然而,當我調用build-services命令時,它無法使用來自外部jar的Classes編譯代碼。

根據我的應用程序中的罐子,我缺少一個步驟嗎?不應該自動鏈接?

螞蟻輸出:

[javac] Compiling 4 source files to C:\liferay\liferay-developer-studio\liferay-plugins-sdk-6.2\portlets\myApp-portal-portlet\docroot\WEB-INF\service-classes 
    [javac] ---------- 
    [javac] 1. ERROR in C:\liferay\liferay-developer-studio\liferay-plugins-sdk-6.2\portlets\myApp-portal-portlet\docroot\WEB-INF\service\com\example\myApp\portal\service\ExternalApiLocalService.java (at line 69) 
    [javac]  public javax.ws.rs.client.WebTarget myAppRestApi(); 
    [javac]   ^^^^^^^^^^^^^^^^^^ 
    [javac] javax.ws.rs.client cannot be resolved to a type 
    [javac] ---------- 
    [javac] 2. ERROR in C:\liferay\liferay-developer-studio\liferay-plugins-sdk-6.2\portlets\myApp-portal-portlet\docroot\WEB-INF\service\com\example\myApp\portal\service\ExternalApiLocalService.java (at line 71) 
    [javac]  public javax.ws.rs.client.WebTarget myAppRegisterService(); 
    [javac]   ^^^^^^^^^^^^^^^^^^ 
    [javac] javax.ws.rs.client cannot be resolved to a type 
    [javac] ---------- 
    [javac] 3. ERROR in C:\liferay\liferay-developer-studio\liferay-plugins-sdk-6.2\portlets\myApp-portal-portlet\docroot\WEB-INF\service\com\example\myApp\portal\service\ExternalApiLocalService.java (at line 73) 
    [javac]  public javax.ws.rs.client.WebTarget myAppValidPaService(); 
    [javac]   ^^^^^^^^^^^^^^^^^^ 
    [javac] javax.ws.rs.client cannot be resolved to a type 
    [javac] ---------- 
    [javac] ---------- 
    [javac] 4. ERROR in C:\liferay\liferay-developer-studio\liferay-plugins-sdk-6.2\portlets\myApp-portal-portlet\docroot\WEB-INF\service\com\example\myApp\portal\service\ExternalApiLocalServiceClp.java (at line 127) 
    [javac]  public javax.ws.rs.client.WebTarget myAppRestApi() { 
    [javac]   ^^^^^^^^^^^^^^^^^^ 
    [javac] javax.ws.rs.client cannot be resolved to a type 
    [javac] ---------- 
    [javac] 5. ERROR in C:\liferay\liferay-developer-studio\liferay-plugins-sdk-6.2\portlets\myApp-portal-portlet\docroot\WEB-INF\service\com\example\myApp\portal\service\ExternalApiLocalServiceClp.java (at line 146) 
    [javac]  return (javax.ws.rs.client.WebTarget)ClpSerializer.translateOutput(returnObj); 
    [javac]    ^^^^^^^^^^^^^^^^^^ 
    [javac] javax.ws.rs.client cannot be resolved to a type 
    [javac] ---------- 
    [javac] 6. ERROR in C:\liferay\liferay-developer-studio\liferay-plugins-sdk-6.2\portlets\myApp-portal-portlet\docroot\WEB-INF\service\com\example\myApp\portal\service\ExternalApiLocalServiceClp.java (at line 150) 
    [javac]  public javax.ws.rs.client.WebTarget myAppRegisterService() { 
    [javac]   ^^^^^^^^^^^^^^^^^^ 
    ...........................etc 

BUILD FAILED 
C:\liferay\liferay-developer-studio\liferay-plugins-sdk-6.2\build-common-plugin.xml:262: The following error occurred while executing this line: 
C:\liferay\liferay-developer-studio\liferay-plugins-sdk-6.2\build-common.xml:634: Compile failed; see the compiler error output for details. 

的ivy.xml:

<?xml version="1.0"?> 
<ivy-module 
    version="2.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" 
> 
    <info module="portlet_liferay_faces_alloy_tmpl" organisation="com.liferay" /> 

    <dependencies defaultconf="default"> 
     ... 
     <dependency name="jersey-common" org="org.glassfish.jersey.core" rev="2.12" transitive="true" /> 
     <dependency name="jersey-client" org="org.glassfish.jersey.core" rev="2.12" transitive="true" /> 
     <dependency name="html-json" org="org.glassfish.jersey.media" rev="2.12" transitive="true"/> 
    </dependencies> 
</ivy-module> 

親切的問候, thenaglecode。

回答

2

你幾乎自己回答了這個問題,但它不是很明顯:當servicebuilder運行時,它會執行一些需要與項目的類路徑一起運行的java代碼:ServiceBuilder將編譯/檢查代碼以生成適當的接口等。

因此,您還需要將項目的依賴關係注入到servicebuilder進程中。從IDE運行servicebuilder時,很可能會運行Ant任務,該任務將從Web應用程序(例如,在WEB-INF/lib和應用程序服務器的全局類路徑中找到的所有明顯(對ant)依賴項)中進行。 Ant進程不會掃描任何ivy,maven或其他構建工具的依賴聲明 - 不幸的是,您必須兩次添加這個依賴。