2014-11-16 4 views
0

Ant를 사용하여 실행 파일 (더블 클릭)을 생성하려고합니다. 내 수업은 간단한 멀티 스레딩 채팅 서버 인 ChatClient와 ChatServer입니다. 자습서를 읽은 후에 build.xml을 만들었지 만 여기에 잘못된 것이있는 것처럼 보입니다. 오류 : 오류 : 메인 클래스 C를 찾을 수 없거나로드 할 수 없습니다. (jar 파일의 경로)Ant에서 생성 된 실행 가능한 jar 파일이 작동하지 않습니다.

프로젝트 이름은 JamesPractice이고 패키지 이름은 SimpleChat입니다. 수업은 SimpleChatServer 및 SimpleChatClient

<?xml version="1.0"?> 
<project name = "JamesPractice" default= "jar" basedir ="."> 
<property name = "src.dir" location = "src" /> 
<property name = "build.dir" location = "c:\Build" /> 
<property name = "project.name" value = "JamesPractice" /> 
<property name="lib.dir" location="lib" /> 

<target name = "clean"> 
    <delete dir="${build.dir}" /> 
</target> 

<target name = "makedir"> 
    <mkdir dir= "${build.dir}" /> 
    <mkdir dir= "${build.dir}\classes" /> 
</target> 

<target name = "compile" depends = "clean, makedir"> 
    <javac srcdir = "${src.dir}" destdir = "${build.dir}\classes" /> 
</target> 

<target name = "jar" depends = "compile"> 
    <jar destfile = "${build.dir}/jars/${ant.project.name}.jar" basedir = "${build.dir}/classes" /> 
    <manifest file = "MANIFEST.MF"> 
     <attribute name = "Main-Class" value = "SimpleChat.SimpleChatServer"/> 
     <attribute name = "Class-Path" value = "."/> 
    </manifest> 

</target> 

MANIFEST.MF 
Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.9.2 
Created-By: 1.7.0_11-b21 (Oracle Corporation) 
Main-Class: SimpleChat.SimpleChatClient 

Editied 나는 두 개의 클래스를 통합 한 하고 그것을 잘 작동합니다. .jar는 여전히 나에게 같은 오류를 준다. HelloWorld로 테스트 해보니이 작업을 할 수 있는지 ...

+0

http://stackoverflow.com/questions/9874550/how-to-create-a-bundled-runnable-jar-using-ant – Jayan

답변

0

"manifest"부분을 < 항아리로 이동하십시오. ... </jar> tag :

<target name = "jar" depends = "compile"> 
    <jar destfile = "${build.dir}/jars/${ant.project.name}.jar" basedir = "${build.dir}/classes"> 
     <manifest file = "MANIFEST.MF"> 
      <attribute name = "Main-Class" value = "SimpleChat.SimpleChatServer"/> 
      <attribute name = "Class-Path" value = "."/> 
     </manifest> 
    </jar> 
</target> 

그리고 이전 버전의 Ant 대신 Maven을 사용하는 것이 좋습니다. Maven은 몇 년 전에 산업 표준이되었습니다.

+0

내가 에서 이동 및 파일 = "MANIFEST 제거있어, 감사합니다. MF "오류는 manifest가"file "속성을 지원하지 않는다고 말합니다. 하지만 여전히 동일한 "로드 할 수 없습니다"주요 오류가 발생합니다. 클래스 경로 나 메인 클래스에 문제가있을 수 있습니까? – jaycee

+0

빌드에서 클래스 경로 속성이 필요없는 것 같습니다. 그것을 제거하려고합니다. 도움이되지 않으면 질문을 편집하고 생성 된 MANIFEST.MF 콘텐츠를 추가하십시오. – ursa

+0

클래스 경로를 제거한 후에도 여전히 동일한 오류가 발생합니다. 제거하기 전에 생성 된 MANIFEST.MF를 추가했습니다. – jaycee

관련 문제