2013-06-25 70 views
1

我遇到的问题较大,但我会简化失败的概念。Groovy脚本无法导入java代码

我正在使用Ubuntu。

这里是我的目录结构:

〜/ mydirectory中

- /常规

-/myjavafiles

我有一个脚本,script.groovy,那里面的生活〜/mydirectory/groovy和一个名为Hello.java的java文件,它位于〜/ mydirectory/myjavafiles中。 script.groovy具有以下内:

#!/usr/bin/env groovy 

package groovy; 
import myjavafiles.Hello; 

println("hello"); 

Hello.java有这样的:

package myjavafiles; 
public class Hello { 
    public Hello() { 
     System.out.println("hello"); 
    } 
} 

我曾尝试运行:

$./script.groovy 

藏汉作为

$groovy script.groovy 

但我只有一个错误,“无法找到课程”。

以下是我已经采取措施来解决这个错误的步骤:

我。设置CLASSPATH =〜/ mydirectory,那不起作用。

ii。使用

$jar cf myjavafiles.jar myjavafiles 

并将myjavafiles.jar放置在〜/ .groovy/lib中,但没有工作。

iii。如前所述here,我试图修改如下groovy.script:

#!/bin/bash 
//usr/bin/env groovy 
package groovy; 
import myjavafiles.Hello; 

println("hello"); 

这也没有工作。

其他,也许有关

如果它的任何帮助,我使用Ubuntu,Java 7的和Groovy 2.1.5

GROOVY_HOME = /选择/常规/ Groovy的2.1.5/

和$ GROOVY_HOME/bin在我的路径中

我将不胜感激任何帮助。

+0

[如添提到](http://stackoverflow.com/ a/17300114/459743)你在一个包中声明你的java类,但是试图从另一个包中导入它。 – codelark

回答

1

更改script.groovy到:

package groovy 
import myjavafiles.Hello 

println "hello" 

编译与Java代码:

javac myjavafiles/Hello.java 

然后运行

groovy groovy/script.groovy 
+0

我不知何故犯了一个错误,并没有包含正确的文件。我正在使用和未能使用的导入是myjavafiles.Hello 我将尝试编译java代码。这是我每次都必须做的事吗?有没有办法编译java文件的整个目录? – neastin

+0

如果您更改它,您将需要编译它。你尝试过'javac myjavafiles/*。java'吗?另外,你可能会使用像[gradle](http://www.gradle.org/)这样的东西来为你建造这个建筑 –

+0

10我编译了Hello.java,它产生了一个Hello.class文件。 但是,当我尝试groovy script.groovy时,它失败了。它似乎只适用于〜/ mydirectory时,并执行groovy groovy/script.groovy。总之,它的工作原理..但为什么它必须以这种方式运行? – neastin