2014-11-17 5 views
0

저는 이틀 동안이 문제로 어려움을 겪었습니다. 이 작업을 수행 할 수 있는지 테스트하기 위해 매우 간단한 HelloWorld 클래스를 만들었지 만 수행 할 수 없었습니다. 오류 - 기본 클래스를 찾지 못했습니다 ... Eclipse에서 실행되거나 스크립트에서 작업을 실행합니다. 하지만 .jar를 더블 클릭하거나 CMD에서 실행하면 오류가 발생합니다. 이 오류의 가능한 원인은 무엇입니까? 클래스 경로? 환경 변수? 디렉토리 구조? 도와주세요!주 클래스를 찾을 수 없거나로드 할 수 없습니다. Ant에서 생성 한 .jar 파일을 실행할 수 없습니다.

package com.hellojava; 

public class HelloWorld { 

public static void main(String[] args) 
{ 
    System.out.println("Hello World!"); 
} 

} 

내 build.xml 파일

<project name="TestProject" basedir="." default="main"> 

<property name="src.dir"  value="src"/> 
<property name="build.dir" value="build"/> 
<property name="classes.dir" value="${build.dir}/classes"/> 
<property name="jar.dir"  value="${build.dir}/jar"/> 
<property name="main-class" value="com.hellojava.HelloWorld"/> 

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

<target name="compile"> 
    <mkdir dir="${classes.dir}"/> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}"/> 
</target> 

<target name="jar" depends="compile"> 
    <mkdir dir="${jar.dir}"/> 
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}"> 
     <manifest> 
      <attribute name="Main-Class" value="${main-class}"/> 
     </manifest> 
    </jar> 
</target> 

<target name="run" depends="jar"> 
    <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/> 
</target> 

<target name="clean-build" depends="clean,jar"/> 

<target name="main" depends="clean,run"/> 

run: 
[java] Hello World! 
main: 
BUILD SUCCESSFUL 
Total time: 5 seconds 

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.9.2 
Created-By: 1.7.0_11-b21 (Oracle Corporation) 
Main-Class: com.hellojava.HelloWorld 

** 편집 : TestProject.jar는하지만 javaw를 -jar TestProject.jar 작동 -jar 자바는하지 않습니다. 그러나 문제를 해결했습니다. 게시 한 답변을 참조하십시오.

+0

명령 프롬프트에서 실행하는 방법은 무엇입니까? javaw .jar을 사용하고 있습니까? –

+0

java TestPractice.jar – jaycee

+0

javaw TestPractice.jar을 실행하십시오. –

답변

1

jar 파일을 실행하는 일반적인 구문은 java -jar TestPractice.jar입니다. 이것이 실패하면 몇 가지 분석이 필요합니다.

  1. WinZip으로 jar 파일을 열고 임시 디렉토리로 추출하십시오.
  2. HelloWorld.class 파일이 있고 올바른 디렉토리에 있는지 확인하십시오.
  3. META-INF/MANIFEST.MF 파일이 있는지 확인하십시오.이 파일에는 메인 클래스가 있습니다. com.hellojava.HelloWorld이 파일을 생성하는 Ant 스크립트에는 아무 것도 표시되지 않습니다 .

모두 정상이면 프로그램이 실행됩니다.

은 자세한 내용은 해결 how to create a bundled runnable jar using Ant

+0

java -jar TestPractice.jar가 작동합니다. HelloWorld.class는 올바른 디렉토리 (com \ hellojava \ HelloWorld.class)에 있습니다. 내 게시물에 META-INF/MANIFEST.MF 파일이 올바른 것처럼 보입니다. 그것은 나에게 맞는 것 같습니다.jar 파일은 여전히 ​​doubleclick으로 실행 가능하지 않습니다. – jaycee

0

문제로보세요!

레지스트리를 사용중인 올바른 Java 버전으로 변경해야했습니다. 그것은 내 comp에 있던 Java의 이전 버전으로 설정되었습니다.

I can run .jar files through cmd, but I cannot double click them

또한, 나는 javaw를 -jar file.jar 자바 -jar file.jar 일 동안 나를 위해 작동하지 않는 것으로 나타났습니다. .jar 파일을 여는 프로그램을 "open with"로 변경하고 javaw 대신 java를 선택했습니다. 이제 문제가 해결됩니다. 문제가 하나 더 있습니다. 왜 javaw가 작동하지 않는 지 궁금하지만 지금은 이것이 작동하고있어 기쁩니다.

0

나는 같은 문제가있었습니다. 응용 프로그램은 내 PC에서 제대로 작동하지만 일부 PC에서는 동일한 오류가 발생합니다. 귀하의 애플 리케이션이 작동하지 않는 컴퓨터에서 자바 런타임을 upadte하십시오. 예를 들어 JRE7 및 Java 1.6이 설치된 응용 프로그램이 작동하지 않는 PC에서 작업했습니다.

관련 문제