Я боролся с этим последние несколько дней. Ошибки класса not found, выдаваемые энхансером datanucleus в классах Scala, происходят из-за того, что файл scala-library.jar отсутствует в пути к классам при запуске энхансера. Я нашел два решения:
Простой, но грязный: Скопируйте scala-library.jar в папку eclipse / plugins, которая содержит энхансер. Для меня это в настоящее время: /opt/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.5.5.r36v201110112027/appengine-java-sdk-1.5.5/lib/tools/orm
Отключите компоновщик энхансера в свойствах своего проекта и создайте файл ant, чтобы запустить его вручную. Затем вы можете правильно контролировать путь к классам. Я действительно изо всех сил пытался вставить библиотеку scala в путь к классам, поэтому сдался и скопировал ее в ту же папку, что и мои банки с датануклеусом. Мой файл муравья, если кому-то интересно, это:
<project name="DataNucleusEnhancer" default="enhance" basedir=".">
<property name="base.dir" location="/home/steve/Projects/DNProject"/>
<property name="datanucleus.libs" location="/home/steve/Projects/Jar Libraries/datanucleusjars"/>
<property name="sdk.dir" location="/opt/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.5.5.r36v201110112027/appengine-java-sdk-1.5.5"/>
<property name="classes.dir" location="${base.dir}/war/WEB-INF/classes/"/>
<property name="entities.dir" location="${base.dir}/war/WEB-INF/classes/packagenamehere/entities"/>
<path id="enhancer.classpath">
<fileset dir="${datanucleus.libs}" includes="*.jar" excludes="" />
<fileset dir="${sdk.dir}/lib/user" includes="*.jar" />
</path>
<target name="enhance" description="DataNucleus enhancement">
<taskdef name="datanucleusenhancer" classpathref="enhancer.classpath" classname="org.datanucleus.enhancer.tools.EnhancerTask" />
<datanucleusenhancer dir="${classes.dir}" failonerror="true" verbose="true">
<fileset dir="${entities.dir}" includes="**/*.class" />
<classpath>
<path location="${base.dir}/war/WEB-INF/classes/"/>
<path refid="enhancer.classpath"/>
</classpath>
</datanucleusenhancer>
</target>
</project>
При тестировании я также обнаружил, что энхансер не хочет улучшать классы, если у меня нет пространств имен. Я также обеспокоен тем, что теперь мне нужно управлять копией scala-library.jar, чтобы убедиться, что она такая же, как в плагине scala eclipse. Было бы намного лучше, если бы плагин gae работал правильно!