2013-03-30 3 views
0

가장 최근에는 JDK 1.6.0_26이 포함 된 Eclipse Juno JavaEE IDE 인 maven 3.x와 함께 작업하고 있습니다. 일부는 내 프로젝트에서 enum을 클래스의 내부와 외부 모두 사용했습니다. 내가 정리 빌드를 실행하면 내가 잘하면 작동되지 않도록 한 후 Maven에서 Java Enum을 컴파일하는 방법은 무엇입니까?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
    <executions> 
     <execution> 
      <id>default-compile</id> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
      <configuration> 
       <excludes> 
        <exclude>**/*.*</exclude> 
       </excludes> 
       <includes> 
        <include>**/MyClass.java</include> 
       </includes> 
      </configuration> 
     </execution> 
     <execution> 
      <id>second</id> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
      <configuration> 
       <includes> 
        <include>**/*</include> 
       </includes> 
       <excludes> 
        <exclude>**/MyClass.java</exclude> 
       </excludes> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

를 추가 그래서
[ERROR] found : my.package.MyClass.MyEnum 
[ERROR] required: my.package.MyClass.MyEnum 

가 그럼 난 my/package/MyClass.java 처음 컴파일 할 필요가 있음을 보장 오류를 나타납니다. 나에게 너무 짜증나. 내 응용 프로그램에서 enum을 사용해야한다면 어떻게 극복 할 수 있습니까? 블로그에서 증명하려고하는 누군가는 버그 자바 1.6.0_26이며 JDK 7에서 수정되었습니다. 그렇다면 JDK 7.x로 마이그레이션 할 수 없습니다. Eclipse JNO Java EE를 사용하여 Maven 3.x에서이 문제를 해결할 수있는 방법.

package com.formativesoft.mcserp.validator; 

public class Validator { 

    public enum Lang { 
     EN, BN; 
    } 
} 
+0

왜 컴파일에서 모든 것을 제외 시키시겠습니까? 열거 형 클래스 만 컴파일 하시겠습니까? – WeMakeSoftware

+0

열거 형 클래스가 먼저 컴파일되지 않았으므로 열거 형 클래스 만 컴파일하려고합니다. enum 클래스를 컴파일 한 다음 나머지는 enum 클래스에 의존하는 클래스를 컴파일하려고합니다. –

+0

뭔가가 교차 의존성 또는 메이븐 캐시로 엉망이 될 수 있습니다. ~/.m2 디렉토리를 청소하고 maven 빌드를 실행하십시오. 또한 명령 행이나 Eclipse에서 maven을 실행합니까? 의심스러운 상황에서는 명령 줄에서 maven을 실행하는 것이 가장 좋습니다. –

답변

2

컴파일 실행 요령은 필요하지 않습니다. 열거 형이 정의 된 동일한 아티팩트에서 사용되는 경우, 수행해야 할 특별한 것은 없습니다. 나는 그것이 일시적인 결함 일 뿐이라고 추측한다. 귀하의 pom 구성에서 목표 정의 제외 madness을 제거하고 콘솔에서 프로젝트에 mvn clean install을 실행하면 거의 확실하게 문제가 발생하지 않습니다. 오류 메시지가 나타나면 추가로 도움을 받으십시오.

+0

'[INFO] ----------------------------- -------------------------------- [오류] 컴파일 오류 : [정보] ------- -------------------------------------------------- ---- [ERROR] D : \ Workspaces \ MCSWorksapces \ SpringWorkspace \ mcserp \ 스프링 유효성 검사기 \ src \ main \ java \ com \ formativesoft \ mcserp \ validator \ NickName.java : [20,25] 호환되지 않는 유형 found : com.formativesoft.mcserp.validator.Validator.Lang 필수 : ​​com.formativesoft.mcserp.validator.Validator.Lang' –

+0

실제로 언급 한대로 시도했지만 결실을 맺지 못하면 실행 노드가 덧붙였다. 처음에는 이클립스의 문제가 될 수 있다고 가정하고 콘솔 콘솔에서 직접 시도해 보았습니다. 위와 같이 나와있는 오류 메시지가 발생했습니다. –

+0

mcserp.validator.Validator.Lang 코드를 게시 할 수 있습니까? 어떻게 정의됩니까? 코드가 이클립스에서 편집 가능한 것처럼 보이나요? 열거 형을 다른 클래스의 하위 클래스로 정의 할 수 있습니까? 그런 다음 부모 클래스의 인스턴스를 전달하거나이 질문을 살펴 봐야합니다. http://stackoverflow.com/questions/2097982/is-it-possible-to-create-an-instance-of- nested-class-using-java-reflection –

관련 문제