Chan Chen Coding...

Add morphia into Play 2.0

There are two ways of adding morphia jar file into play 2.0.
Demo source code can be found at: https://github.com/czihong/playMongoDemo

1. Unmanaged dependencies 
1.1 download morphia jar file from http://code.google.com/p/morphia/downloads/list
1.2 save morphia-0.99.jar into your {playProjectDIr}/lib
1.3 add this jar file to your project classpath

2. Managed Dependencies
Modified the Build.scala file
import sbt._
import Keys._
import PlayProject._

object ApplicationBuild extends Build {

    val appName         = "stdtlk"
    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
            // Add your project dependencies here,
        "com.google.code.morphia" % "morphia" % "0.99"
    )

    val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
            // Add your own project settings here    
            resolvers += "Maven repository" at "http://morphia.googlecode.com/svn/mavenrepo/"
    )
}

Some Exception may Occur
FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: can't parse argument number: interface com.google.code.morphia.annotations.Id=@com.google.code.morphia.annotations.Id():
java.lang.IllegalArgumentException: can't parse argument number: interface com.google.code.morphia.annotations.Id=@com.google.code.morphia.annotations.Id()
    at java.text.MessageFormat.makeFormat(MessageFormat.java:1356)
    at java.text.MessageFormat.applyPattern(MessageFormat.java:475)
    at java.text.MessageFormat.<init>(MessageFormat.java:367)
    at java.text.MessageFormat.format(MessageFormat.java:828)
    at org.slf4j.bridge.SLF4JBridgeHandler.getMessageI18N(SLF4JBridgeHandler.java:233)
    at org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:191)
    at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:267)
    at java.util.logging.Logger.log(Logger.java:498)
    at java.util.logging.Logger.doLog(Logger.java:520)
    at java.util.logging.Logger.logp(Logger.java:689)
    at com.google.code.morphia.logging.jdk.JDKLogger.log(JDKLogger.java:107)
    at com.google.code.morphia.logging.jdk.JDKLogger.debug(JDKLogger.java:38)
    at com.google.code.morphia.mapping.MappedClass.<init>(MappedClass.java:113)
    at com.google.code.morphia.mapping.Mapper.addMappedClass(Mapper.java:141)
    at com.google.code.morphia.Morphia.map(Morphia.java:55)
    at com.google.code.morphia.Morphia$map.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at com.bakersoftware.providerIntegrator.domain.DbFactoryBean.getObject(DbFactoryBean.groovy:22)

Comment 1 by br@nesbot.com, Nov 26, 2011
I saw this error occur as well.  I am using Scala but the same error occured at the same location.  I see you have included the slf4j library in your classpath.

Did you take a look at http://code.google.com/p/morphia/wiki/SLF4JExtension ?
You need to include the extension in your classpath and then ensure you call the following code at start-up to register the logger extension and the error disappears.  You can put it in a static {} block if you prefer.

For the explain, see the build system of play 2.0 document.
refer to: https://github.com/playframework/Play20/wiki/SBTDependencies

-----------------------------------------------------
Silence, the way to avoid many problems;
Smile, the way to solve many problems;

posted on 2012-04-11 22:23 Chan Chen 阅读(659) 评论(0)  编辑  收藏 所属分类: Play Framework 2.0


只有注册用户登录后才能发表评论。


网站导航: