문제

GWT를 컴파일하는 개미 빌드 스크립트를 실행하려고합니다. 이 스크립트에는 각각 비교적 긴 경로가있는 많은 라이브러리가 포함되어 있습니다. 내 GWT 코드는 이러한 라이브러리 중 일부만 접촉합니다. 그러나 내가 개발하고있는 다른 모든 응용 프로그램에 사용하는 LIB 디렉토리의 모든 리바리를 포함하는 것이 편리합니다. 내 빌드 스크립트의 관련 부분은 다음과 같습니다.

<path id="gwt.project.class.path">
  <pathelement location="gen"/>
  <pathelement location="${gwt.sdk}/gwt-user.jar"/>
  <fileset dir="${gwt.sdk}" includes="gwt-dev*.jar"/>
  <fileset dir="${smartgwt.sdk}" includes="smartgwt*.jar"/>
  <!-- Add any additional non-server libs (such as JUnit) -->
  <fileset dir="lib" includes="**/*.jar"/>
</path>

<target name="gwtc" depends="compileApp" description="GWT compile to JavaScript" unless="noGWTModule">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
  <classpath>
    <pathelement location="src"/>
    <path refid="gwt.project.class.path"/>
  </classpath>
  <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError -->
  <jvmarg value="-Xmx256M"/>
  <!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
  <arg value="${gwt.module}"/>
  <arg value="-war" />
  <arg value="${gwt.gen.dir}" />
</java>
</target>`

이것을 실행하려고하면 다음과 같은 오류가 발생합니다.

java.io.IOException: CreateProcess: "C:\Program Files\Java\jdk1.5.0_11\jre\bin\java.exe" -Xmx256M -classpath "C:\Program Files\Common Files\eclipse\workspace\development\src;C:\Program Files\Common Files\eclipse\workspace\development\lib\build\hbBuildSupport.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\ehcache.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-annotations.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-commons-annotations.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-entitymanager.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-tools.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-validator.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate3.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\javassi�

컴파일의 일부 지점에서 모든 라이브러리 경로를 포함하는 문자열이 잘린 것으로 보입니다. CreateProcess의 문자 제한 때문일 수 있습니까? 이 CreateProcess 명령 문자열은 잘림하기 전에 약 1024 자로 불과합니다. 이는 작은 한계처럼 보입니다. 어쨌든이 한도를 높일 수 있습니까? 모든 생각/솔루션/해결 방법에 감사드립니다.

감사합니다, Mayur

도움이 되었습니까?

해결책

문제는 Windows 명령 줄이 8191 자이며 GWT는 클래스 경로의 각 JAR에 대한 전체 경로를두고 있다는 것입니다. 이것을 고치는 유일한 방법은 항아리를 더 짧은 경로를 가진 디렉토리로 옮기는 것입니다.

상징적 링크를 작성한 다음 빌드 파일에서 해당 링크를 참조하여 Windows 에서이 작업을 수행 할 수 있습니다. 이 같은

C의 루트에서 :

mklink /D jars C:\Program Files\Common Files\eclipse\workspace\development\lib

Windows의 Wikpedia 항목 기호 링크

다른 팁

매우 긴 클래스 경로를위한 가능한 해결 방법 중 하나는 사용하는 것입니다. java.ext.dirs 이 디렉토리에서 속성 및 모든 컴파일 타임 종속성 (현재 ClassPath에서 참조 된 Jar-Files)을 삭제합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top