자바 어플리케이션을 개발하여 jar파일을 배포하고자 합니다.
- 작성자 :
- 곽*
- 작성일 :
- 2016-10-20 15:35:49
- 조회수 :
- 4,672
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하세요
java8, spring, maven를 이용하여 java daemon을 개발하였습니다.
리눅스에 배포를 하려고 하는데
Run As -> Maven Build를 하면 target폴더에 a.jar와 개발된 package가 생성됩니다.
요지는 a.jar가 모든 소스를 패킹되고 있어 jar만 배포를 하려고 하는데 배포 후 실행방법을 모르겠습니다.
관련 wiki가 있거나 관련 자료가 있으면 답변 및 링크를 알려주시면 감사하겠습니다.
java -jar pesTool.jar ->실행하면
no main manifest attribute. in pesTool.jar
메세지가 출력됩니다.
답변부탁드립니다.
수고하십시오.
^^ 자답입니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
pom.xml에 위와 같은 plugin을 추가하여 해결되었습니다.
그런데 음 이제는
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
와 같은 에러가 발생을 하고 있습니다.
소스상에는
private static final String[] SPRING_CONFIG_XML = new String[] {
"classpath:/egovframework/batch/context-batch-datasource.xml"
,"classpath:/egovframework/batch/context-batch-spring.xml"
};
xml을 잃어오고 있는데.. 이 부분에 문제가 있는것 같아서요..
답변 부탁드립니다.
java8, spring, maven를 이용하여 java daemon을 개발하였습니다.
리눅스에 배포를 하려고 하는데
Run As -> Maven Build를 하면 target폴더에 a.jar와 개발된 package가 생성됩니다.
요지는 a.jar가 모든 소스를 패킹되고 있어 jar만 배포를 하려고 하는데 배포 후 실행방법을 모르겠습니다.
관련 wiki가 있거나 관련 자료가 있으면 답변 및 링크를 알려주시면 감사하겠습니다.
java -jar pesTool.jar ->실행하면
no main manifest attribute. in pesTool.jar
메세지가 출력됩니다.
답변부탁드립니다.
수고하십시오.
^^ 자답입니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
pom.xml에 위와 같은 plugin을 추가하여 해결되었습니다.
그런데 음 이제는
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
와 같은 에러가 발생을 하고 있습니다.
소스상에는
private static final String[] SPRING_CONFIG_XML = new String[] {
"classpath:/egovframework/batch/context-batch-datasource.xml"
,"classpath:/egovframework/batch/context-batch-spring.xml"
};
xml을 잃어오고 있는데.. 이 부분에 문제가 있는것 같아서요..
답변 부탁드립니다.
A
곽종님 안녕하세요.
표준프레임워크센터입니다.
# 앞서 문의하신 내용의 다른 방식입니다.
java 어플리케이션을 실행하는 과정에서 main 메소드의 위치가 특정되어야 하는데,
구성한 jar 파일에는 관련된 정보가 정의되지 않아서 발생하는 현상으로 보입니다.
Manifest.txt 파일을 아래의 내용으로 작성하여 jar파일에 적용하시기 바랍니다.
-----------------------------------------------------------------
Main-Class: com.xxx.yyy.Test
-----------------------------------------------------------------
- 메인 클래스가 com.xxx.yyy패키지 아래 있는 Test.java 파일인 것을 의미합니다.
# 두번째 문의하신 내용은 org.springframework.context.ApplicationContext 클래스를 참조하지 못하는것 같습니다.
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
라이브러리 구성을 확인해보시기 바랍니다.
감사합니다.
p.s
처음 이슈와 관련하여 보다 상세한 내용은 아래 포스트를 참고하시기 바랍니다.
http://seein7.tistory.com/entry/%EC%8B%A4%ED%96%89-%EA%B0%80%EB%8A%A5%ED%95%9C-jar-%ED%8C%8C%EC%9D%BC-%EB%A7%8C%EB%93%A4%EA%B8%B0
표준프레임워크센터입니다.
# 앞서 문의하신 내용의 다른 방식입니다.
java 어플리케이션을 실행하는 과정에서 main 메소드의 위치가 특정되어야 하는데,
구성한 jar 파일에는 관련된 정보가 정의되지 않아서 발생하는 현상으로 보입니다.
Manifest.txt 파일을 아래의 내용으로 작성하여 jar파일에 적용하시기 바랍니다.
-----------------------------------------------------------------
Main-Class: com.xxx.yyy.Test
-----------------------------------------------------------------
- 메인 클래스가 com.xxx.yyy패키지 아래 있는 Test.java 파일인 것을 의미합니다.
# 두번째 문의하신 내용은 org.springframework.context.ApplicationContext 클래스를 참조하지 못하는것 같습니다.
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
라이브러리 구성을 확인해보시기 바랍니다.
감사합니다.
p.s
처음 이슈와 관련하여 보다 상세한 내용은 아래 포스트를 참고하시기 바랍니다.
http://seein7.tistory.com/entry/%EC%8B%A4%ED%96%89-%EA%B0%80%EB%8A%A5%ED%95%9C-jar-%ED%8C%8C%EC%9D%BC-%EB%A7%8C%EB%93%A4%EA%B8%B0