1

乱雑/複雑な説明と質問の絶え間ない編集で申し訳ありませんが、根本的な問題を特定することはまだできていません.

Grails で PlayORM を使用する際に問題があります: 1. BuildPath と "/lib" フォルダーから "logback-classic.jar" を削除し、"commons-logging" を保持することで解決できる依存関係の競合があります。問題の詳細については、以下を参照してください。2.依存関係が削除されたことが原因である可能性が高いと思われるいくつかの奇妙なPlayORM例外が発生しています。

| Loading Grails 2.2.1
| Configuring classpath.
| Environment set to development.....
| Packaging Grails application.....
| Running Grails application
| Error 2013-06-18 10:38:31,057 [Thread-8] ERROR plugins.DefaultGrailsPlugin  - Cannot generate controller logic for scaffolded class class nosql.Transaction. It is not a domain class!
| Server running. Browse to http://localhost:8080/gibb
java.lang.RuntimeException: Failure scanning class(see chained exception)=class com.alvazan.orm.api.z8spi.meta.DboTableMeta
    at com.alvazan.orm.layer0.base.MyClassAnnotationDiscoveryListener.scanClass(MyClassAnnotationDiscoveryListener.java:50)
.......
**Caused by: java.lang.RuntimeException: Failure scanning field=private java.lang.String com.alvazan.orm.api.z8spi.meta.DboTableMeta.columnFamily for class=DboTableMeta
    at com.alvazan.orm.impl.meta.scan.ScannerForClass.inspectField(ScannerForClass.java:209)
    at com.alvazan.orm.impl.meta.scan.ScannerForClass.scanFields(ScannerForClass.java:202)
    at com.alvazan.orm.impl.meta.scan.ScannerForClass.scanSingle(ScannerForClass.java:122)
    at com.alvazan.orm.impl.meta.scan.ScannerForClass.addClass(ScannerForClass.java:80)
    at com.alvazan.orm.layer0.base.MyClassAnnotationDiscoveryListener.scanClass(MyClassAnnotationDiscoveryListener.java:48)
    ... 107 more
Caused by: java.lang.IllegalArgumentException: class=class com.alvazan.orm.impl.meta.data.MetaClassSingle has two fields that have @NoSqlId annotation.  One of them may be in a superclass.  The two fields are=private java.lang.String com.alvazan.orm.api.z8spi.meta.DboTableMeta.columnFamily and=private java.lang.String com.alvazan.orm.api.z8spi.meta.DboTableMeta.columnFamily
    at com.alvazan.orm.impl.meta.scan.ScannerForClass.processIdFieldWorks(ScannerForClass.java:253)
    at com.alvazan.orm.impl.meta.scan.ScannerForClass.inspectFieldImpl(ScannerForClass.java:220)
    at com.alvazan.orm.impl.meta.scan.ScannerForClass.inspectField(ScannerForClass.java:207)
    ... 111 more**

ノート:


初期の問題: 基本的に、Grails で「run-app」または「test-app」を実行すると、次のエラー メッセージが表示されます。

| Loading Grails 2.2.1
| Configuring classpath
| Error SLF4J: Class path contains multiple SLF4J bindings.
| Error SLF4J: Found binding in [jar:file:/home/saasbook/Dropbox/Projects/GrailsWorkSpace/gibb/lib/logback-classic-1.0.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
| Error SLF4J: Found binding in [jar:file:/home/saasbook/.grails/ivy-cache/org.grails/grails-plugin-log4j/jars/grails-plugin-log4j-2.2.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

アプリは実行されますが、オブジェクトをデータベースにフラッシュしようとすると PlayORM 例外が発生します。

java.lang.IllegalArgumentException: Entity type=nosql.Transaction was not scanned and added to meta information on startup.  It is either missing @NoSqlEntity annotation or it was not in list of scanned packages

注: 「Transaction.java」クラスには @NoSqlEntity があり、「Persistance.java」とともに「nosql」パッケージの一部です。


最初の質問:

DEBUG o.c.g.g.i.s.PathMatchingResourcePatternResolver「run-app」、「test-app」、さらには「clean」を試みると、私の grails アプリは何百ものステートメントを生成します。アプリは Eclipse から実行されますが、テストは実行されません。

重要な詳細は、ローカルの git リポジトリからアプリをチェックアウトすると、元のアプリが同じマシンで完全に正常に動作することです。


コメントへの対応: 1. テストが実行されませんでした。2. log4j の設定は何も変更していません。3. この質問を投稿した後、アプリの元のコピーを (別のディレクトリで) 実行したところ、最初のものと同じゴミが生成されました。問題は grails が ~/.grails/2.2.1/projects/{myProjectName} にアプリの設定を保存することですが、アプリの単一の「バージョンの場所」でも持続します。

4

4 に答える 4

0

問題について

java.lang.IllegalArgumentException: Entity type=nosql.Transaction was not scanned and added to meta information on startup. It is either missing @NoSqlEntity annotation or it was not in list of scanned packages  

その理由は、クラスパスに nosql.Persistence クラスがないことが原因である可能性があります。http://buffalosw.com/wiki/FAQ/で関連する FAQ を参照してください。

于 2013-06-19T07:08:14.457 に答える