2014-09-29 2 views
1

웹 서비스 호출을 위해 속성이없는 서비스 작성기에 대한 간단한 엔티티로 기본 ​​프로그램을 가지고 있습니다. 나는 javax.ws.rs-api-2.0.1.jar에 포함 된 javax.ws.rs 라이브러리에 로컬로 의존합니다.Service Builder는 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를 실행하면 웹 응용 프로그램 (예 : WEB-INF/lib과 응용 프로그램의 전역 클래스 경로에있는 내용)에서 모든 명백한 (종속에 대한) 종속성을 취하는 Ant 태스크가 실행될 가능성이 큽니다. Ant 프로세스는 아이비, 메이븐 또는 다른 빌드 도구의 종속성 선언을 검사하지 않습니다. 불행히도이 종속성을 두 번 추가해야합니다.