2012-12-17 18 views
5

Cố gắng làm theo bướC# 4 trong this Hibernate tutorial:Cách khởi động máy chủ HSQLDB như được mô tả trong hướng dẫn Hibernate?

mvn exec:java -Dexec.mainClass="org.hsqldb.Server" -Dexec.args="-database.0 file:target/data/tutorial" 

Tôi nhận được lỗi này:

[INFO] Scanning for projects... 
[INFO] Searching repository for plugin with prefix: 'exec'. 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building First Hibernate Tutorial 
[INFO] task-segment: [exec:java] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Preparing exec:java 
[INFO] No goals needed for project - skipping 
[INFO] [exec:java {execution: default-cli}] 
[WARNING] 
java.lang.ClassNotFoundException: org.hsqldb.Server 
     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:306) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
     at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285) 
     at java.lang.Thread.run(Thread.java:662) 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] An exception occured while executing the Java class. org.hsqldb.Server 

[INFO] ------------------------------------------------------------------------ 
[INFO] For more information, run Maven with the -e switch 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: < 1 second 
[INFO] Finished at: Mon Dec 17 16:35:42 EST 2012 
[INFO] Final Memory: 6M/15M 
[INFO] ------------------------------------------------------------------------ 

Điều này bất chấp tải gói HSQLDB mới nhất và cài đặt nó mỗi the FAQ. Các tập tin hsqldb.jar tọa lạc tại C:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib và classpath env var điểm vào nó:

CLASSPATH=C:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib 

Vậy tại sao tôi nhận được ClassNotFoundException này: org.hsqldb.Server lỗi?

Tôi đang làm gì sai?

Trả lời

13

Trước hết, CLASSPATH của bạn thường không chính xác cho bất kỳ cái bình nào. Tên jar phải được chỉ định, ví dụ:

CLASSPATH=C:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib\hsqldb.jar 

Thứ hai, CLASSPATH không cần thiết cho hướng dẫn này, vì nó là một dự án Maven. Bạn nên thêm phụ thuộc có liên quan vào tệp pom.xml được mô tả trong phần 1.1.1 của hướng dẫn bạn đề cập. Chỉ cần thêm khối này vào khối được liệt kê trong tệp pom.xml, bên trong tab:

<dependency> 
    <groupId>org.hsqldb</groupId> 
    <artifactId>hsqldb</artifactId> 
    <version>2.2.9</version> 
</dependency> 
+1

Ngoài ra, tôi chỉ xác minh rằng nếu '' có trong 'pom.xml', không có CLASSPATH trong môi trường là cần thiết. Thú vị như thế nào Maven quản lý để thực hiện điều đó. – Withheld

1

Tôi khuyên bạn nên tải xuống bản sao hướng dẫn mới từ http://sourceforge.net/projects/hibernate/files/hibernate3/3.3.2.GA/ và cố gắng xây dựng nó. Nếu bạn sẽ bị thiếu phụ thuộc như hsqldb hoặc commons-logging và những người khác tôi đã giải quyết vấn đề này bằng cách thêm kho lưu trữ dự án maven - https://repository.jboss.org/nexus/content/repositories/thirdparty-releases. Khi tất cả các tạo phẩm được tải xuống, tôi có thể chạy máy chủ HSQLDB. Đề nghị so sánh dự án hiện tại của bạn với dự án mới tải về. Nó sẽ giải quyết vấn đề của bạn.

+0

Cảm ơn bạn +1 và @gerrytan. – Withheld

2

Theo http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html, bạn cần chỉ định toàn bộ đường dẫn kết thúc bằng .jar. Nếu có nhiều tệp jar, có thể thử chỉ định C: \ path \ to \ hibernate * .jar

Nếu bạn chỉ chỉ định thư mục, chỉ * tệp .class được tải.

Khả năng khác là biến CLASSPATH mà bạn đặt chỉ hợp lệ cho phiên trình bao, không phải trên toàn cầu - do đó lệnh maven không đọc nó. Thử cài đặt thông qua cài đặt hệ thống Windows.

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