2014-08-28 23 views
6

Bu hata ile ilgili önceki sorular hazırda bekleme sürümü sorununu veya bir testi çalıştırıyor. Buradaki durumun böyle olduğunu düşünmüyorum. ,Sınıf [] yöntemi bir Grails uygulamasının dışında kullanıldı

Caused by IllegalStateException: Method on class [User] was used outside of a Grails application. If running in the context of a test using the mocking API or bootstrap Grails correctly. 

ben veritabanında saklanan bir nesne ile özel statik özelliği örneğini çalışıyorum:

private static User anon = User.findByUsername('anonymous') 

ve bu hatayı yaratıyor: Bir Grails Servis sınıfında

Ben ama çok yanlış bir şey yapmalıyım. Herhangi bir yardım, öneri ve işaretçiler için teşekkürler. O denemek ve GrailsApplication başlatma prosedürü tamamlanmadan önce olduğu hizmet sınıf yüklenen noktada findByUsername çağrı yapacaktır çünkü

cevap

7

O bu static yapmaya çalışmaz. GORM yöntemlerini güvenilir bir şekilde arayabileceğiniz en erken saat, BootStrap saatidir, bu nedenle bu tür durumlarda yapacağım şey hizmette bir başlatma yöntemi oluşturmak ve ardından BootStrap başlangıç ​​kapamasından bu yöntemi çağırmaktır.

+0

Cevabınız için teşekkürler, Ian – malc

2

Bunun eski olduğunu biliyorum, ama hangi çentikleri kullanıyordunuz? Grails 2.3'den grails 2.5'e geçişten sonra da aynı problemi yaşadım.

bazı oldukça ağrılı araştırma sonrasında, yeni çatal mod özellikleri olan testler çalışırken o sorun öğrendim ve BuildConfig.groovy gelen bu seçenekleri kaldırarak çözmek kolaydır:

grails.project.fork = [ 
     // configure settings for compilation JVM, note that if you alter the Groovy version forked compilation is required 
     //compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, daemon:true], 

     // configure settings for the test-app JVM, uses the daemon by default 
     test: false, 
     // configure settings for the run-app JVM 
     run: [maxMemory: 1536, minMemory: 512, debug: false, maxPerm: 1024, forkReserve:false], 
     // configure settings for the run-war JVM 
     war: [maxMemory: 1536, minMemory: 512, debug: false, maxPerm: 1024, forkReserve:false], 
     // configure settings for the Console UI JVM 
     console: [maxMemory: 1536, minMemory: 64, debug: false, maxPerm: 1024] 
] 

Saygılar.

İlgili konular