2010-12-14 2 views
5

임베디드 모드에서 데스크톱 응용 프로그램에 H2 데이터베이스를 사용합니다. 응용 프로그램을 jar 파일로 압축하면 데이터베이스 파일이 생략됩니다. 그래서 MyApplication.jar을 실행할 때 아무 것도 작동하지 않습니다. h2.jar 파일을 MyApplication.jar에 임베드/포함/연결하는 올바른 방법은 무엇입니까? 또는 번들에 데이터베이스와 응용 프로그램을 제공하는 다른 방법이 있습니까?H2 데이터베이스를 클라이언트에 전달 된 jar 파일에 임베드하는 방법은 무엇입니까?

Class-Path: lib/h2.jar lib/… 

부록 :

+0

이 JAR 파일은 어떻게 작성하고 있습니까? Maven과 같은 빌드 도구를 사용하고 계시거나 단순히 명령 줄에서'jar'를 실행 하시겠습니까? – Anon

+0

Eclipse를 사용합니다. jar 파일로 내보내는 옵션이 있으므로이 옵션을 사용합니다. – bancer

+0

나는 Maven을 배우는 데 시간을 할애 할 것을 권장한다 : http://www.sonatype.com/books/mvnref-book/reference/public-book.html - 장기간에 걸쳐서 투자는 여러 번 반복 될 것이다. – Anon

답변

3

하나의 일반적인 기법이 응용 프로그램에 lib 디렉토리 상대에 h2.jar을 넣어 그것을위한 항목과의 JAR의 매니페스트에 Class-Path 항목을 포함하는이 작은 project은 링크가 포함 JAR specification 및 매니페스트 in situ 확인을위한 편리한 유틸리티.

+0

매니페스트 파일 구문을 배우기에 좋은 리소스는 무엇입니까? – bancer

+0

@bancer : 나는 위에서 정교했다. – trashgod

0

프로젝트를 빌드하는 데 maven을 사용하는 경우 maven-assembly-plugin (jar-with-dependencies)을 사용하십시오. 이렇게하면 모든 종속성이 들어있는 단일 jar 파일이 생성됩니다.

3

Maven을 사용하여 프로젝트를 빌드하는 경우 maven-shade-plugin ... 훌륭한 결과와 제어를 사용하십시오. 많이 사용했습니다. 응용 프로그램 항아리에 포함

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>shade</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

그럼 그냥 일반 "MVN 패키지"로 당신이해야합니다 모든 종속 '항아리 : 당신이 뭔가를 작성합니다 모든 종속성을 삽입하는

.

추가 구성을 사용하여 포함 할 내용과 적용하지 않을 내용을 제어 할 수 있습니다. 당신이 당신의 jar 파일에 데이터베이스 자체를 넣을 경우

관련 문제