我正在使用 this tutorial 设置 hyperjaxb
在 Eclipse 中运行。到目前为止,我已经将其发送到 marshal
和 unmarshal
,但它尚未触发 hbm2ddl
在数据库中创建表,并且它不清楚我应该在 eclipse 目录结构中的哪个位置找到我创建的用于运行上面教程链接中的代码的 Main.java
和 TestFunctions.java
类。 我如何改变我的 Eclipse 配置来实现这些事情?
这是我的 main.java:
package maintest;
public class Main {
public static void main(String[] args) {
TestFunctions mf = new TestFunctions();
try {mf.setUp();} catch (Exception e) {e.printStackTrace();}
mf.unmarshal();
mf.setUpPersistence();
Long id = mf.saveToDatabase();
System.out.println("hjid is: "+id);
mf.loadFromDatabase(id);
mf.marshal();
}
}
您可以通过 clicking on this link 从 TestFunctions.java
阅读更冗长的代码。请注意,文件共享站点错误地将代码居中对齐,尽管代码在我的计算机上是左对齐的。
persistence.properties
是:
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=someusername
hibernate.connection.password=somepassword
hibernate.connection.url=jdbc:mysql://localhost/sometestdatabase
hibernate.hbm2ddl.auto=create-drop
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.jdbc.batch_size=0
当我右键单击 Main.java
并单击 run as.. java application
时,我当前收到以下堆栈跟踪:
Exception in thread "main" java.lang.NoClassDefFoundError: maintest/TestFunctions
at maintest.Main.main(Main.java:7)
Caused by: java.lang.ClassNotFoundException: maintest.TestFunctions
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 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 1 more
目录结构如下:
最佳答案
对于您眼前的问题:如果 Main.java
驻留在 src/main/java
中并且需要调用 TestFunctions.java
,则正常Maven 开发会将 TestFunctions.java
放在 src/main/java
中,而不是 src/test/java
中。 (通常来说,拥有“真实”代码(src/main
中的内容,具体取决于 src/test
中的任何内容)并不是一个好主意。
关于java - 将 hyperjaxb 生成的实体从 eclipse 持久保存到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26348480/