2010-02-25 35 views
30

Tôi đã cài đặt Ant trên máy Fedora 5 sử dụng yum, nhưng Ant không khởi chạy. Tôi nhận được thông báo này lỗi:Điều gì sai với cấu hình kiến ​​của tôi?

[bash]# ant 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher 
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.launch.Launcher 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
Could not find the main class: org.apache.tools.ant.launch.Launcher. Program will exit. 

tôi đã thiết lập các biến môi trường sau đây:

JAVA_HOME = /usr/java/latest 
ANT_HOME = /usr/bin 

Ant được lắp đặt tại /usr/bin/ant.

Tôi cũng đã xem qua this post và có vẻ như biến số JAVAVER_LIBDIR không trỏ đến thứ gì đó tồn tại. Tôi thiết lập một liên kết tượng trưng, ​​giống như bài viết gợi ý xóa vấn đề cho tác giả, nhưng nó không sửa chữa mọi thứ cho tôi.

[bash]# sudo ln -s /usr/share/java /usr/share/java-1.6.0 

Edit: Tôi cũng đã thiết lập một liên kết tượng trưng mà giải quyết một vấn đề tương tự với JAVAVER_JNIDIR biến:

[bash]# sudo ln -s /usr/lib/java /usr/lib/java-1.6.0 

bây giờ tôi nhận được một thông báo lỗi khác nhau:

[bash]# ant --execdebug 
/usr/bin/build-classpath: error: Could not find jaxp_parser_impl Java extension for this JVM 
/usr/bin/build-classpath: error: Could not find xml-commons-apis Java extension for this JVM 
/usr/bin/build-classpath: error: Some specified jars were not found 
exec "/usr/java/latest/bin/java" -classpath "/usr/share/java-1.6.0/ant.jar:/usr/share/java-1.6.0/ant-launcher.jar:/usr/java/latest/lib/tools.jar" -Dant.home="/usr" -Dant.library.dir="/usr/lib" org.apache.tools.ant.launch.Launcher -cp "" 
Buildfile: build.xml does not exist! 
Build failed 

Tắt cho Google các thông báo lỗi này ...

Trả lời

11

Tôi nghĩ rằng ANT_HOME nên được thiết lập với '/ usr/bin/ant'. Tôi có cấu hình đó (CENTOS 5).

script sh của tôi dưới '/etc/profile.d' có conf này .:

export JAVA_HOME="/usr/local/java"; 
export ANT_HOME="/usr/local/ant"; 

Tôi hy vọng nó sẽ giúp bạn.

+0

Đó là một phần của sự cố. Cảm ơn. Tôi vẫn chưa hoàn toàn sửa tất cả mọi thứ, nhưng điều này đã giúp trên đường đi. –

2

Hãy thử cài đặt xerces-j2-xml-apis

+0

Điều này giải quyết được 'Không thể tìm thấy phần mở rộng Java xml-commons-apis Java cho lỗi JVM' này mà tôi đã sử dụng' ant' và JDK 8 trên SLES 11 SP4. – jaume

6

Tôi đã có một vấn đề tương tự nhưng cố định sau đó cho tôi:

sudo yum install xml-commons-apis 
1

tôi đã cùng một vấn đề trên Suse, SLES 11. Hidayath của câu trả lời https://stackoverflow.com/a/4849302/1211900 giải quyết nó. Giả sử out-of-the-box gói kho: tôi @ SLES: ~> sudo zypper cài đặt xerces-j2-xml-apis

3

Tôi có vấn đề như vậy trên Fedora 16 nhưng trong trường hợp xerces gói của tôi và xml-commons-apis là ok . Trên thực tế, --execdebug là rất hữu ích và nó in mà kiến ​​không thể tìm thấy một thư mục tại /usr/lib/jvm-exports/YOUR_JDK. Điều này là do tôi chuyển từ openjdk sang jdk của oracle và thư mục của phiên bản cũ của jdk (/usr/lib/jvm-exports/java-1.6.0-openjdk-1.6.0.0) đã ở đó nhưng không có phiên bản hiện tại của tôi (/usr/lib/jvm-exports/jdk1.6.0_32).Những thư mục chỉ bao gồm một loạt các liên kết mềm trỏ đến lọ đặc biệt jre vì vậy tôi đã tiến hành các bước sau:

  1. tạo một thư mục mới cho phiên bản hiện tại của jdk (jdk1.6.0_32)
  2. sao chép tất cả các liên kết từ của openjdk thư mục vào thư mục mới
    # cp -av java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
  3. đúng tất cả trong số họ như vậy là họ đang trỏ vào lọ oracle của, ví dụ:
    # cd /usr/lib/jvm-exports/jdk1.6.0_32
    # ln -s -f $JAVA_HOME/jre/lib/rt.jar jaas-1.6.0.0.jar

Rõ ràng, $JAVA_HOME được đặt chính xác (trên phiên bản jdk mới). Nó giải quyết được vấn đề của tôi và có thể là nguyên nhân khác, ngoại trừ các nguyên nhân nêu trên.

26

Tôi đã chỉ gặp vấn đề tương tự trên Fedora 18.

Để làm cho câu chuyện dài ngắn, hãy chạy:

sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0 

Rõ ràng, vấn đề này là cụ thể cho java-1.7.0-openjdk vì tương tự trống danh bạ cho tất cả các phiên bản JDK khác đã tồn tại.


CHI TIẾT

Có lỗi single-line sau khi chạy ant:

Error: Could not find or load main class org.apache.tools.ant.launch.Launcher 

Vấn đề là ở đâu đó trong /usr/share/java-utils/java-functions kịch bản mà cố gắng để thiết lập JAVAVER_JNIDIR/JAVAVER_LIBDIR biến để tham khảo thư mục ở trên. Do không phù hợp chuyển hướng thông báo lỗi để thiết bị xuất chuẩn, một số biến có nhiệm vụ như:

LOCALCLASSPATH='/usr/bin/build-classpath: error: JAVAVER_JNIDIR /usr/lib/java-1.7.0 does not exist or is not a directory' 

Tạo các thư mục theo quy ước được thiết lập bởi tất cả các phiên bản java khác là giải pháp sạch.

+3

Cảm ơn !! tìm thấy bằng cách sử dụng '--execdebug', cùng một vấn đề xảy ra với tôi,' classpath' không được thiết lập đúng. –

+3

Cảm ơn bạn rất nhiều. Điều này khiến tôi phát điên với java-1.8.0! –

+0

Giải pháp này đã giúp tôi khắc phục cùng một vấn đề trên hộp SUSE SLES11 - các đường dẫn chỉ khác một chút. Yay cho 'ant --execdebug'! – zb226

13
sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0 

Tôi đã cài đặt mặt trời java 1.7.x bằng cách tải xuống tệp tar và đặt nó vào/opt. Bởi vì tôi đã không làm một yum cài đặt các thư mục này đã không được tạo ra. JAVA_HOME của tôi được thiết lập để:

$ echo $JAVA_HOME/ 
/opt/jdk1.7.0_03/ 

Khi ai đó nói, chạy sau cung cấp debug rất hữu ích:

ant --execdebug 
2

Trong trường hợp của tôi, tôi đã thiết lập biến ANT_HOME của tôi, nhưng đã /bin/ nối để sử dụng trong đường dẫn hệ thống - biến home này không nên là thư mục nhị phân, sử dụng sau đây để thiết lập một ant hime, và thêm thư mục nhị phân vào đường dẫn env.

export ANT_HOME=/opt/apache-ant-1.9.4 
export PATH=$ANT_HOME/bin:$PATH 
+0

@Downvoter, vui lòng giải thích? –

4

Tôi đã có thông báo lỗi tương tự hôm nay, nhưng được kích hoạt bởi một nguyên nhân khác.

Trong trường hợp của tôi, sau khi tôi cập nhật lên OpenJDK 1.8.0, tôi không thể chạy kiến ​​nữa.

Sự cố đã nói dối với thực tế là đầu ra của lệnh java -fullversion đã thay đổi một chút và số /usr/share/java-utils/java-functions không còn chính xác nữa.

Nâng cấp lên phiên bản mới nhất của jpackage-utils RPM đã giải quyết nó cho tôi.

0

Trong trường hợp của tôi 'lib' thư mục trong đó có tất cả các lọ bao gồm

ant-launcher.jar 

là dưới

/usr/local/Cellar/ant/1.9.6/libexec/ 

tôi sao chép thư mục lib dưới

/usr/local/Cellar/ant/1.9.6/ 

vì sau khi chạy 'ant - -execdebug 'Tôi tìm thấy các lệnh ant đang tìm kiếm thư mục' lib 'trong thư mục' 1.9.6 '.

sau đó thay đổi lệnh kiến ​​bắt đầu hoạt động tốt.

Các vấn đề liên quan