小编Cha*_*ain的帖子

将grails app升级到2.3.7时出错

我最近将Grails应用程序从2.1.1升级到2.3.7.它显示了一些可搜索插件的例外情况.我正在使用搜索:0.6.6

异常看起来像这样:

C:\Users\Charu\.grails\2.3.7\projects\jobjoos\plugins\searchable-0.6.6\src\java\grails\plugin\searchable\internal\compass\config\EnvironmentSearchableCompassConfigurator.java:25: package org.apache.lucene.analysis does not exist
import org.apache.lucene.analysis.Analyzer;
                                 ^
C:\Users\Charu\.grails\2.3.7\projects\jobjoos\plugins\searchable-0.6.6\src\java\grails\plugin\searchable\internal\compass\search\DefaultSuggestQueryMethod.java:31: package org.apache.lucene.analysis does not exist
import org.apache.lucene.analysis.WhitespaceAnalyzer;
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我,关于导致它失败的原因以及如何将其删除.

lucene grails groovy searchable-plugin grails-searchable

5
推荐指数
1
解决办法
329
查看次数

访问对象列表上的唯一闭包会产生UnsupportedOperationException

我正在使用Grails 2.3.11并使用MongoDb插件mongodb:3.0.3.

我的代码看起来像这样:

def home() {
   List abcs = ABC.list()
   println abcs.unique { it.parent }
}
Run Code Online (Sandbox Code Playgroud)

访问唯一闭包时代码中断.

例外说:

ERROR errors.GrailsExceptionResolver- UnsupportedOperationException   occurred when processing request: [GET] /MongoAppInEcomEnv/product/home
Stacktrace follows:
Message: null
Line | Method
->>  148 | add       in java.util.AbstractList
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    108 | add …
Run Code Online (Sandbox Code Playgroud)

grails grails-orm mongodb

5
推荐指数
1
解决办法
80
查看次数

静态方法的"需求"不适用于Grails-3.2.4中的"新MockFor"'Junit测试'

任何人都可以让我知道如何要求一个类的静态方法.我尝试使用下面的代码并且它不能使用它:

import groovy.mock.interceptor.MockFor

final mockCl = new MockFor(ClassName) 
mockCl.demand.static.methodName(1) { return 'something' } 
Run Code Online (Sandbox Code Playgroud)

有了它,它给出了以下例外:

groovy.lang.MissingPropertyException: No such property: static for   class: groovy.mock.interceptor.Demand at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53) at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.getProperty(GetEffectivePogoPropertySite.java:87)
Run Code Online (Sandbox Code Playgroud)

有人能指出我如何使用grails 3在JUNIT中模拟静态方法.

grails junit grails-3.0 grails3.2.0

5
推荐指数
1
解决办法
425
查看次数

自定义电子邮件Appender用于发送log4j错误而不返回完整的堆栈跟踪

我正在编写自己的CustomEmailAppender来发送生成错误的电子邮件.

代码如下:

class CustomEmailAppender extends AppenderSkeleton {
   def ctx = ApplicationHolder.getApplication().getMainContext()
   def mailService = ctx.getBean('mailService')
   def springSecurityService = ctx.getBean('springSecurityService')
   def executorService = ctx.getBean('executorService')


  public static void register() {
    CustomEmailAppender appender = new CustomEmailAppender()
    Logger.getRootLogger().addAppender(appender)
    Logger.getLogger("StackTrace").addAppender(appender)
  }

/**
 * Constructor with default values.
 */
    public CustomEmailAppender() {
      setThreshold(Level.ERROR)
      setLayout(new PatternLayout("%c{2} %m%n"))
    }

/**
 * {@inheritDoc}
 */
 @Override
    public void append(final LoggingEvent event) {

      if (!event.getLevel().isGreaterOrEqual(Level.ERROR)) {
          return
       }

      event.getThreadName()
      event.getNDC()
      event.getMDCCopy()
      sendErrorEmail(layout.format(event))
    }

/**
 * {@inheritDoc}
 * @see org.apache.log4j.AppenderSkeleton#close()
 */
  public …
Run Code Online (Sandbox Code Playgroud)

grails groovy logging log4j

4
推荐指数
1
解决办法
247
查看次数

jackson禁用@JsonFormat注释

我正在使用 jackson 库,并且遇到了一种情况,我想在序列化/反序列化时使用 objectmapper 禁用 @JsonFormat 注释。

我的 Api 代码位于第 3 方库中,因此我无法删除/添加任何注释,因此 objectMapper 是唯一的选择。

API类:

public class ApiClass {

  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'")
  private DateTime time;

}
Run Code Online (Sandbox Code Playgroud)

我的代码:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.configure(Feature.ALLOW_COMMENTS, true);
objectMapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS, true);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
objectMapper.setSerializationInclusion(Include.NON_ABSENT);
objectMapper.registerModule(new JodaModule());
objectMapper.registerModule(new JavaTimeModule());

String str = " {\"time\": \"2012-05-01\"}";

ApiClass msg = objectMapper.readValue(str, ApiClass.class);
Run Code Online (Sandbox Code Playgroud)

我希望这次转换能够成功进行。

目前我得到: com.fasterxml.jackson.databind.JsonMappingException:格式无效:“2012-05-01”太短

请在这里帮助我。

提前致谢

java jackson jackson-dataformat-xml jackson2 jackson-databind

3
推荐指数
1
解决办法
3179
查看次数