현재 디렉토리에 jar 파일을 생성하고 클래스 경로에서 사용하려는 Java 소스 파일이 여러 개 있습니다. 그래서 모든 소스 파일을 가져 와서 컴파일하여 관련 .class 파일을 생성했습니다. 다음과 같이 jar 파일을 만들었습니다.
jar cf abstractions.jar *.class
이것은 물론 jar 파일을 생성했습니다. abstractions.jar
그런 다음 다음 테스트 클래스를 만들었습니다. Main.java
import edu.stanford.cs.console.ConsoleWindow;
public class Main {
public static void main(String[] args) {
ConsoleWindow console = new ConsoleWindow();
}
}
다음과 같이 명령 줄에서이 파일을 컴파일했습니다.
javac -cp abstractions.jar Main.java
패키지를 찾을 수 없다는 다음 오류 메시지가 나타납니다.
Main.java:1 : 오류 : edu.stanford.cs 패키지가 존재하지 않습니다. import edu.stanford.cs.ConsoleWindow;
^ Main.java:5 : 오류 : ConsoleWindow에 액세스 할 수 없습니다. ConsoleWindow console = new ConsoleWindow (); ^ 잘못된 클래스 파일 : ./abstractions.jar(ConsoleWindow.class) 클래스 파일에 잘못된 클래스가 포함되어 있습니다. edu.stanford.cs.console.ConsoleWindow 제거하거나 클래스 경로의 올바른 하위 디렉토리에 나타나는지 확인하십시오.
ConsoleWindow 클래스의 상단은 다음과 같습니다.
/*
* File: ConsoleWindow.java
* ------------------------
* This file implements the Console interface using a JFrame window.
*/
package edu.stanford.cs.console;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
오류 메시지를 이해할 수 없습니다. 하위 디렉토리에 대해 언급하지만 항아리 안에 폴더가 없습니다.
문제를 해결하고 프로그램을 컴파일하려면 어떻게해야합니까?
jar 명령은 .class 파일이있는 폴더를 포함해야합니다. 생성 된 .jar 파일에 파일이 있습니까? .jar의 이름을 .zip으로 바꾸고 내부를 살펴보십시오.
다음과 같이 jar 파일을 빌드하려면 ant를 사용해야합니다.
<target name="jar" description="build jar file">
<jar destfile="abstractions.jar" includes="**/*.class" basedir="folder_where_you_put_class_files">
</jar>
</target>
그러면 적절한 jar 파일이 생성됩니다.
또는 jar를 사용하여 .class 파일이있는 기본 폴더로 이동하고 다음을 사용하십시오.
jar -cf ../abstractions.jar *
* .class를 사용하면 현재 폴더의 파일 만 압축됩니다 (재귀 적이 지 않음).
참고 jar의 도움말 :
"파일이 디렉토리이면 재귀 적으로 처리됩니다."
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다