使用java调用groovy,在windows开发环境下的代码如下:
GroovyScriptEngine scriptEngine = new GroovyScriptEngine(System.getProperty("user.dir") + "/data/groovy");
Eclipse跑程序没有任何问题,但是当部署到linux环境以后就出现了下列bug,死活过不去了...
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
file:/data/webgame/gameserver/data/groovy/vip.groovy: 2: unable to resolve class com.ages.newitem.model.VipRoulette
@ line 2, column 1.
import com.ages.newitem.model.VipRoulette
VipRoulette这个类是java项目中的,很明显groovy对此没买账,根据异常信息猜测可能是classload的问题.
于是加了一个参数
GroovyScriptEngine scriptEngine = new GroovyScriptEngine(System.getProperty("user.dir") + "/data/groovy", this.getClass().getClassLoader());
这样一来groovy和java就都在一个类加载器中,这样就可以互通有无了...
使用java调用groovy,在windows开发环境下的代码如下:GroovyScriptEngine scriptEngine = new GroovyScriptEngine(System.getProperty("user.dir") + "/data/groovy"); Eclipse跑程序没有任何问题,但是当部署到linux环境以后就出现了下列bug,死活过不去了.....
当项目导入、运行爆红时,一个劲百度出现的错误和解决方案,可能不是最先做的事。
加深对于项目运行过程的理解,才是治本的方法
刚刚导入一个别人的项目,或者把别人的代码移植进来,大概率会一片爆红,因为“环境配置”不一样。
对于这种Sync时出错的事情,一定要往“环境配置”四个字上去找原因。
环境配置,无非是网络配置和下面这四个gradle文件:
先说网络配置
相信点开这篇文章的同学都已经过了unable to find valid certification这一关,成功为自己的项目配置好了阿里云仓库等
这个插件可以在SonarQube中分析Groovy。
它利用针对编码规则和提出问题,以解决复杂的循环问题。
为了覆盖代码,应使用SonarQube 插件。 此外,此插件仍支持导入JaCoCo二进制报告(不推荐使用,以后将删除)和 。
1.4 / 1.5
CodeNarc
0.25.2
GMetrics
5.6-6.7
6.7-7.9
7.8-8.3
分析Groovy项目的步骤
安装SonarQube服务器
安装SonarQube Scanner,并确保您可以从拥有源代码的目录中调用sonar-scanner
安装Groovy插件。
在项目的根目录下创建一个sonar-project.properties文件
从项目根目录运行sonar-scanner命令
单击分析结尾处提供的链接,以在SonarQube UI中浏览项目的质量
CodeNarc :可以通过设置sonar.groovy.codenarc.repor
肯·库森(Ken Kousen)的《的源代码
回购分为几个单独的章节。 每章包含一个或多个项目,每个项目都有其自己的gradle构建文件。 大多数使用自己的自述文件来描述如何使用Gradle进行构建和测试。
完成其他章节后,将在此处添加其代码。
如有任何疑问或意见,请发送至:
肯·库森()
java项目,使用maven构建工具,整合groovy代码。
经验:不要使用Grab注解的方式声明依赖,这样需要在pom中引入ivy。
在pom中引入ivy又会有类加载器的问题。
所以,最好是通过pom声明依赖。
执行groovy脚本
编译groovy类
groovy代码中引用java类
java代码中引用groovy类
groovy类作为junit
干净而尖叫的建筑
特定的薪资实现在薪资软件包中,另外两个软件包也位于其中:域和外部。
该域包含Entity层,它也具有UseCase,但是我决定删除它,因为我认为该层是不必要的。 我已尽力使域名包“尖叫”:薪资
外部程序包包含业务规则外部的所有内容,例如表示,持久性等。这些外部性中的每一个都由一个程序包表示,一个程序包本身包含另一个表示使用的重要技术或框架的程序包。 例子:
external.persistence.inMemory->内存中的外部域持久性表示形式
external.presentation.vaadin->使用Vaadin框架的外部域表示表示
external.presentation.webservice.spark->使用Spark Framewor
以前没有注意到SimpleDateFormat线程不安全的问题,写时间工具类,一般写成静态的成员变量,不知,此种写法的危险性!在此讨论一下SimpleDateFormat线程不安全问题,以及解决方法。
为什么SimpleDateFormat不安全?
直接上一个例子,日期格式化成字符串:
package com.anjz.test.simpleDateFormat;
import java.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
Date date = sdf.parse("2015-10-12");
} catch (ParseException e) {
e.printStackTrace();
}会出现异常,因为内容和转化的格式不相同
Simpl
import org.codehaus.groovy.control.CompilerConfiguration;
import org.codehaus.groovy.control.customizers.ImportCustomizer;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
CompilerConfiguration config = new CompilerConfiguration();
ImportCustomizer imports = new ImportCustomizer();
imports.addImports("org.example.Foo");
config.addCompilationCustomizers(imports);
Binding binding = new Binding();
binding.setVariable("name", "Alice");
GroovyShell shell = new GroovyShell(binding, config);
shell.evaluate("greet(name)");
还有许多其他方法可以在Java项目中使用Groovy,这取决于您的具体需求。 如果您需要更多帮助,请告诉我您的具体需求,我会尽力为您提供帮助。