Eclipse JBOSS 사용 시 에러

Programming 2013. 11. 18. 15:57 by touchsoul

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

에러 메시지는 아래와 같다.


Deployment "AttachmentStore" is in error due to: java.lang.IllegalArgumentException: Wrong arguments. new for target java.lang.reflect.Constructor expected=[java.net.URI] actual=[java.io.File]



해결방법은 

$JBOSS_HOME/server/default/conf/bootstrap/profile.xml 의 일부분을 수정하면 된다.


<bean name="AttachmentStore" class="org.jboss.system.server.profileservice.repository.AbstractAttachmentStore">
  <!-- <constructor><parameter><inject bean="BootstrapProfileFactory" property="attachmentStoreRoot" /></parameter></constructor> -->
  <constructor><parameter class="java.io.File"><inject bean="BootstrapProfileFactory" property="attachmentStoreRoot"></inject></parameter></constructor>
  <property name="mainDeployer"><inject bean="MainDeployer"></inject></property>
  <property name="serializer"><inject bean="AttachmentsSerializer"></inject></property>
  <property name="persistenceFactory"><inject bean="PersistenceFactory"></inject></property>
</bean>


위와 같이 기존에 있던 constructor 를 주석 처리 하고 아래 내용을 추가해 주면 된다.

<constructor><parameter class="java.io.File"><inject bean="BootstrapProfileFactory" property="attachmentStoreRoot"></inject></parameter></constructor>



파라미터 클래스에 java.io.File 추가된 라인을 넣어주면 에러가 나지 않는다.


왜? 위에 내용을 추가해 주면 에러가 해결될까??


org.jboss.system.server.profileservice.repository.AbstractAttachmentStore.class 의 코드를 살펴보자 여기


살펴 보면 해당 클래스의 생성자가 아래와 같이 되있는 것을 볼 수 있다.


public AbstractAttachmentStore(File root) {

  this(getURI(root));

}

  

public AbstractAttachmentStore(URI uri) {

  if(uri == null)

    throw new IllegalArgumentException("Null uri.");

    this.attachmentStoreRoot = uri;

}


이처럼 이클립스에서 어떤 생성자를 사용해야하는 것에 대해 오류가 나서 생기는 일이다.. 그래서 xml에 파라미터 형식을 정해주는 것이다. 생성자는 URI로 되어 있는데 실제로는 File로 들어왔다는 오류인 것이다. 그래서 xml에 명시를 해주는 것이다.

Nav