小编tim*_*tes的帖子

Eclipse没有在运行时将Groovy脚本编译成java类

奇怪的是,我没有任何编译时错误,但在运行应用程序时,我收到Groovy类的NoClassDefFound错误.

我使用Eclipse 3.6和Groovy 2.7.0插件.我在我的机器上安装了Groovy 1.8.5,并且groovy-all.jar在我的应用程序类路径中.

我可以看到WEB-INF/classes文件夹中的所有groovy文件,扩展名为.groovy,扩展名不是.class.

我在这里缺少什么?

java eclipse groovy

8
推荐指数
1
解决办法
9225
查看次数

将多个文件合并为一个

我在一些位置有4个不同的文件,如:D:\ 1.txt D:\ 2.txt D:\ 3.txt和D:\ 4.txt

我需要创建一个新文件NewFile.txt,它应该包含上述文件中存在的所有内容1.txt,2.txt,3.txt 4.txt .......

所有数据都应出现在New Single文件(NewFile.txt)中.

请建议我在java或Groovy中做同样的想法....

java string groovy file

8
推荐指数
1
解决办法
2万
查看次数

没有joinTable的单向OneToMany关系

为了在映射单向OneToMany关系时实现外键列(没有joinTable),我按照Grails(版本2.2.3)参考文档,第6.5.2.1节 OneToMany映射的步骤进行操作,其中说明

使用单向关联时,需要在关联本身上指定外键.例如,给定Person(由One替换)和Address(由Many替换)之间的单向OneToMany关系,以下代码将更改Many表中的外键

class One {

    static hasMany = [manyCollection:Many]
    static mapping = {
        manyCollection(column:"ONE_ID")
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,当我跑

One one = new One()
one.addToManyCollection(new Many())

one.save()
Run Code Online (Sandbox Code Playgroud)

我进入控制台

insert 
into
    one
    (id, version) 
values
    (null, ?)

insert 
into
    many
    (id, version) 
values
    (null, ?)

insert 
into
    one_many
    (one_many_collection_id, many_id) 
values
    (?, ?)
Run Code Online (Sandbox Code Playgroud)

注意Grails创建一个名为one_many的joinTable.所以,我的问题:这是一个错误或其他什么?我该怎么做才能摆脱joinTable?

即使我使用类似的东西

class One {

    static hasMany = [manyCollection:Many]
    static mapping = {
        manyCollection(joinTable:false)
    }

}
Run Code Online (Sandbox Code Playgroud)

为凸显在这里,我得到的结果相同

mapping grails grails-orm

8
推荐指数
1
解决办法
2801
查看次数

在Gradle build中使用groovy类

我正在尝试从build.gradle文件中运行Groovy类.我正在遵循使用指南中的指示,但是我收到了错误.

构建文件是:

apply plugin: 'java'
apply plugin: 'groovy'

  main {
    java {
      srcDirs = ["$projectDir/src/java"]
    }
    groovy {
      srcDirs = ["$projectDir/src/groovy"]
    }
  }

    dependencies {
        compile 'org.codehaus.groovy:groovy-all:2.2.0', files(....)
    }

    task fooTask << {
        groovyClass groovyClass = new groovyClass()
        groovyClass.foo()
    }
Run Code Online (Sandbox Code Playgroud)

groovy类非常简单:

    public class groovyClass {

            public void foo() {
                    println 'foo'
            }
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行gradlew编译fooTask时,我收到以下错误:

无法解析类groovyClass

知道为什么吗?

谢谢

groovy build gradle

8
推荐指数
1
解决办法
9693
查看次数

如何使用Gradle在没有第一个目录的情况下提取

我正在尝试提取没有PARENT目录的从属zip文件,在使用Gradle提取时排除某些文件.

这是我得到的,这有效,但感觉不对,我希望有更好的方法来做到这一点

我提取的Zip文件

jar tf parent-folder-name.zip


parent-folder-name/bin/something.sh
parent-folder-name/bin/something.bat
parent-folder-name/lib/somelib.jar
Run Code Online (Sandbox Code Playgroud)

选项1

task explodeToDist1(type: Copy) {
    from zipTree(configurations.extractDist.singleFile)
    exclude "**/lib/**"
        eachFile {
            def newPath = it.relativePath.segments[1..-1].join("/")
            it.relativePath = RelativePath.parse(true, newPath)
        }
    into 'build/dist'
    doLast {
        def path = buildDir.getPath() + "/dist/parent-folder-name"
        def dirToDelete = new File(path)
        dirToDelete.deleteOnExit()
    }
}
Run Code Online (Sandbox Code Playgroud)

选项2

task explodeToDist2 << {
        def unzipDir = new File('build/unzipTmp')
        copy {
            from zipTree(configurations.extractDist.singleFile)
            into unzipDir
        }
        def rootZipDir = unzipDir.listFiles()[0]
        fileTree(rootZipDir){
                exclude "**/lib/**"
        }.copy {
            into 'src/dist'
        }
        unzipDir.deleteDir()
}
Run Code Online (Sandbox Code Playgroud)

对我来说选项2 …

groovy build unzip gradle

8
推荐指数
1
解决办法
2202
查看次数

使用XmlSlurper时出现MalformedURLException

我在groovy中有以下代码片段:

s = '''
<html>
<head>
<title>My title</title>
</head>
<body>
This is body!
</body>
</html>'''

new XmlSlurper().parse(s)
Run Code Online (Sandbox Code Playgroud)

它给出了以下例外:

java.net.MalformedURLException: no protocol: 
<html>
<head>
<title>My title</title>
</head>
<body>
This is body!
</body>
</html>
    at java.net.URL.<init>(URL.java:586)
    at java.net.URL.<init>(URL.java:483)
    at java.net.URL.<init>(URL.java:432)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:613)
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:812)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
    at groovy.util.XmlSlurper.parse(XmlSlurper.java:147)
    at groovy.util.XmlSlurper.parse(XmlSlurper.java:213)
    at groovy.util.XmlSlurper$parse.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at ConsoleScript12.run(ConsoleScript12:11)
    at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:257)
    at groovy.lang.GroovyShell.run(GroovyShell.java:481)
    at groovy.lang.GroovyShell.run(GroovyShell.java:163)
    at groovy.lang.GroovyShell$run.call(Unknown Source)
    at groovy.ui.Console$_runScriptImpl_closure17.doCall(Console.groovy:955)
    at groovy.ui.Console$_runScriptImpl_closure17.doCall(Console.groovy) …
Run Code Online (Sandbox Code Playgroud)

html xml groovy xmlslurper

8
推荐指数
1
解决办法
3215
查看次数

如何使用 groovy 从日期中获取日期

我想从日期中获取日期(例如周日、周一、周二……)

def date = new Date()
def day = date[Calendar.DAY_OF_MONTH]
Run Code Online (Sandbox Code Playgroud)

结果是 18,但我想得到星期一。

如果我有2017-10-09T00:00:00.000,我想得到 2017-10-09T00:00:00.000 的那一天

请问你能帮帮我吗?

groovy

8
推荐指数
2
解决办法
2万
查看次数

Grails 2.2到2.3 - 运行forked test-app时出错:无法加载grails构建监听器类

我正在将我的项目从grails 2.2迁移到2.3,当我做test-app时(在IDEA 12.1.6上),我收到了这个错误

| Error Error running forked test-app: Could not load grails build listener class
java.lang.RuntimeException: Could not load grails build listener class
    at org.codehaus.groovy.grails.cli.support.GrailsBuildEventListener.addGrailsBuildListener(GrailsBuildEventListener.java:258)
    at org.codehaus.groovy.grails.cli.support.GrailsBuildEventListener.loadGrailsBuildListeners(GrailsBuildEventListener.java:106)
    at org.codehaus.groovy.grails.cli.support.GrailsBuildEventListener.initialize(GrailsBuildEventListener.java:73)
    at org.codehaus.groovy.grails.cli.fork.ForkedGrailsProjectClassExecutor.createEventListener(ForkedGrailsProjectClassExecutor.groovy:102)
    at org.codehaus.groovy.grails.cli.fork.testing.ForkedGrailsTestRunner.createInstance(ForkedGrailsTestRunner.groovy:93)
    at org.codehaus.groovy.grails.cli.fork.ForkedGrailsProjectClassExecutor.initializeProjectInstance(ForkedGrailsProjectClassExecutor.groovy:85)
    at org.codehaus.groovy.grails.cli.fork.ForkedGrailsProjectClassExecutor.run(ForkedGrailsProjectClassExecutor.groovy:72)
    at org.codehaus.groovy.grails.cli.fork.testing.ForkedGrailsTestRunner.main(ForkedGrailsTestRunner.groovy:75)
Caused by: java.lang.ClassNotFoundException: org.jetbrains.groovy.grails.rt.GrailsIdeaTestListener
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:648)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:758)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:746)
    at org.codehaus.groovy.grails.cli.support.GrailsBuildEventListener.addGrailsBuildListener(GrailsBuildEventListener.java:255)
    ... 7 more
| Error Error running forked test-app: Could not load grails build listener class
| …
Run Code Online (Sandbox Code Playgroud)

grails intellij-idea grails-2.2 grails-2.3

7
推荐指数
1
解决办法
3314
查看次数

Gradle不会生成Javadoc

我正在用Gradle编写一个构建文件来进行Java构建操作.但是,Gradle不会为我的项目生成Javadoc.根据Gradle.org的文档,要在Gradle中实现Javadocs任务,必须指定源和类路径.

apply plugin: 'java'

javadoc {
source = sourceSets.main.allJava
classpath = configurations.compile
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行命令时gradle javadoc,或者gradle build,永远不会创建javadocs(build\docs)的默认文件夹,因此不会为项目生成html文件.我该怎么做才能解决这个问题?

java javadoc gradle

7
推荐指数
1
解决办法
1万
查看次数

Groovy:map literal上的getClass方法返回null

在Groovy中,我在代码中经常使用地图文字表示法,并对Map的具体实现感到好奇.

在尝试了一些事情之后,这个脚本最能说明我的困惑:

def map = ["A":"B"]
println map // I assume this avoids any lazy evaluation of the map
println map instanceof HashMap // I tried some other impls too
println map.class
Run Code Online (Sandbox Code Playgroud)

并收到此输出:

[A:B]
true
null
Run Code Online (Sandbox Code Playgroud)

这告诉我地图显然是一个HashMap,但getClass方法不想告诉我.

所以我的问题是:为什么getClass返回null,是否有更合适的方法从Groovy获取运行时类信息?

null groovy dictionary class

7
推荐指数
1
解决办法
692
查看次数