是否可以在mapToObj方法中执行多个语句?.假设我想使用以下代码将字符串转换为二进制字符串:
String str = "hello";
String bin = str.chars()
.mapToObj(x-> Integer.toBinaryString(x))
.collect(Collectors.joining(" "));
Run Code Online (Sandbox Code Playgroud)
但是,我想使用类似的东西处理前导零
String.format("%8s", x).replaceAll(" ", "0")
Run Code Online (Sandbox Code Playgroud)
那么,如何在mapToObj方法中添加它.我是Java 8新功能的新手.任何帮助,将不胜感激
我需要在Groovy中检查字符串是否是有效的JSON.我的第一个想法是发送它new JsonSlurper().parseText(myString),如果没有例外,则认为它是正确的.
但是,我发现Groovy很乐意接受尾随逗号JsonSlurper,但JSON 不允许使用尾随逗号.有没有一种简单的方法来验证Groovy中的JSON是否符合官方JSON规范?
最近我将一个简单的Grails应用程序与Searchable插件集成在一起.我发现Searchable插件不能与Hibernate 4库一起使用.
在这里你可以找到一个示例应用程序,它只包含干净的Grails 2.4应用程序,只添加了可搜索的插件 - https://github.com/wololock/grails-searchable-example
当我运行此应用程序时:
runtime ":hibernate4:4.3.5.5"
Run Code Online (Sandbox Code Playgroud)
依赖,它不会启动并抛出异常:
ClassNotFoundException: org.hibernate.impl.SessionFactoryImpl
Run Code Online (Sandbox Code Playgroud)
我已经发现已经在Hibernate4中将SessionFactoryImpl移动到org.hibernate.internal包中,看起来Compass在旧位置查找此类:
2014-10-11 19:41:58,142 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializing the application: org/hibernate/impl/SessionFactoryImpl
Message: org/hibernate/impl/SessionFactoryImpl
Line | Method
->> 95 | injectLifecycle in org.compass.gps.device.hibernate.lifecycle.DefaultHibernateEntityLifecycleInjector
Run Code Online (Sandbox Code Playgroud)
切换回:
runtime ":hibernate:3.6.10.17"
Run Code Online (Sandbox Code Playgroud)
和改变
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
Run Code Online (Sandbox Code Playgroud)
在DataSource.groovy解决了这个问题.
我的问题是:在Hibernate 4中使用Searchable插件是否有任何解决方法,或者我们必须等待或解决Compass/Searchable源代码中的问题?您是如何在Grails应用程序中处理该问题的?我将非常感谢您的提示.
对于一般配置,Grails提供了两个文件:
- 的grails-app/CONF/BuildConfig.groovy
- 的grails-app/CONF/Config.groovy中
它们都使用Groovy的ConfigSlurper语法.第一个是BuildConfig.groovy,用于运行Grails命令时使用的设置,例如compile,doc等.第二个文件Config.groovy用于运行应用程序时使用的设置.这意味着Config.groovy与您的应用程序一起打包,但BuildConfig.groovy不是.
这是关于log4j框架的摘录:
Grails使用其通用配置机制为底层Log4j日志系统提供设置,因此您所要做的就是将log4j设置添加到文件grails-app/conf/Config.groovy.
我有一个包含这两个文件的项目:grails-app/conf/BuildConfig.groovy和grails-app/conf/Config.groovy.该项目使用该log4j实用程序,因此一些设置(包括函数)放在Config.groovy文件中.现在,根据我引用的文档,它是正确的文件,因为我想使用日志实用程序来运行应用程序,而不是编译它.
有趣的是,当我mvn package在项目上运行时会使用这些设置- log4j执行设置中的功能.
我知道可以使用它grailsApplication来访问这些设置:
def recipient = grailsApplication.config.foo.bar.hello
Run Code Online (Sandbox Code Playgroud)
所以我搜索了我的项目并找到了一些用法grailsApplication,但没有与log4j设置有关.
使用在Config.groovy文件中放置log4j设置的其他可能原因是什么mvn package?我错过了什么?
更新:当我mvn package第一次使用构建项目时,提到的配置似乎有效.下次运行时mvn package,将使用文件中的log4j配置Config.groovy.如果我删除了工作空间,它再次运行良好.
我有以下项目树:
??? app
? ??? build.gradle
? ??? src
? ??? main
? ? ??? java
? ? ? ??? child
? ? ? ??? app
? ? ? ??? Application.java
? ? ??? resources
? ? ??? application-default.yaml
? ??? test
? ??? java
? ??? child
? ??? app
? ??? ApplicationTest.java
??? build.gradle
??? childA
? ??? build.gradle
? ??? src
? ??? main
? ??? java
? ??? child
? ??? a
? ??? BaseGreeterImpl.java
? …Run Code Online (Sandbox Code Playgroud) 我必须处理与Gradle 2.2一起运行的项目。
我想安装Gradle 2.2,以使项目构建良好。但是我不知道该怎么做,我只能安装Gradle最新版本。有没有办法安装特定版本的Gradle?
我在Ubuntu 14.04 LTS上工作。
如何仅运行测试用例的一种方法以使用 Gradle 进行调试?我试过了:
gradle test -tests example.TestFoo#testMethod1 --debug-jvm
Run Code Online (Sandbox Code Playgroud)
但最终出现以下错误:
No tests found for given includes: example.TestFoo#testMethod1
Run Code Online (Sandbox Code Playgroud)
测试TestFoo类有testMethod1(),testMethod2()等等。
你打电话的时候 :
Run Code Online (Sandbox Code Playgroud)Object isThreadSafe = scriptEngine.getFactory().getParameter("THREADING");
它MULTITHREADED按以下方式返回:
但目前尚不清楚这是什么影响.
这是否意味着:
如果答案可以用一些代码说明,那将是很好的.
我有一个构建管道,需要从一些bash脚本中提取一个值,并在其他地方使用该值.我试图将我的bash脚本的结果存储在这样的环境变量中:
#!/usr/bin/env groovy
pipeline {
agent none
stages {
stage('Break Jenkins') {
agent any
steps {
sh """
ENV_VAR=\$(awk -F'-' '{print \$2 }' <<< \$(ls installer-*-ia32-win.zip))
echo $ENV_VAR
"""
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当解释器遇到这echo $ENV_VAR条线时,Jenkins抛出一个异常:
groovy.lang.MissingPropertyException:没有这样的属性:ENV_VAR for class:groovy.lang.Binding
我试图ENV_VAR通过转义美元符号前缀来告诉Jenkins解释器不是Jenkinsfile环境变量,如下所示:
echo \$ENV_VAR
Run Code Online (Sandbox Code Playgroud)
并且喜欢这个
echo '$ENV_VAR'
Run Code Online (Sandbox Code Playgroud)
都没有按预期工作.我认为这是一个问题,我在一个字符串块(sh """ ... """)的语法内,并告诉詹金斯不要试图ENV_VAR从envs集合中获取值.
无论如何,我没有太多的运气谷歌搜索解决这个问题,因为詹金斯的管道有自己的环境变量的概念,似乎是与bash环境变量分开.
看起来我只能在一个environment块中设置一个Jenkinsfile环境变量,这没有用,因为我已经在一个sh块里面了.
简而言之,有没有办法在块中设置和访问环境变量的值sh?
我想从带有“本地”环境变量的 Gradle 命令行运行 Micronaut 服务器。常规命令
.\gradlew.bat run
Run Code Online (Sandbox Code Playgroud)
将使用 application.yml 文件中定义的默认变量。我想用我的本地环境的值覆盖其中一些,因此需要指定系统属性micronaut.environments=local以使用来自application-local.yml文件的覆盖值。
.\gradlew.bat run -Dmicronaut.environments=local
Run Code Online (Sandbox Code Playgroud)
上面的命令将不起作用,因为 Gradle 将仅使用-Dmicronaut作为系统属性,其余的“.environments=local”将被视为另一个任务名称:
Task '.environments=local' not found in root project 'abc'
Run Code Online (Sandbox Code Playgroud)
将此类系统属性传递给 java 进程的正确方法是什么?
gradle ×4
groovy ×4
grails ×2
java ×2
hibernate ×1
java-8 ×1
java-stream ×1
jenkins ×1
json ×1
jsonslurper ×1
jsr223 ×1
log4j ×1
maven ×1
micronaut ×1
searchable ×1
spring ×1
spring-boot ×1
spring-mvc ×1
testing ×1
validation ×1