2013-06-25 5 views
1

Проблема у меня больше, но я упрощу концепцию, которая терпит неудачу.Groovy скрипт не может импортировать код Java

Я работаю над Ubuntu.

Вот моя структура каталогов:

~/MyDirectory

-/заводной

-/myjavafiles

У меня есть сценарий, script.groovy, который живет внутри ~/mydirectory/groovy и java-файл Hello.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 

Но Я получаю сообщение об ошибке «невозможно найти класс».

Вот шаги, я взял, чтобы исправить эту ошибку:

я. set 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 =/опт/заводной/заводной-2.1.5/

и $ GROOVY_HOME/bin находится в моем PATH

Я очень благодарен за любую помощь.

+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

Я скомпилировал Hello.java, в котором был создан файл Hello.class. Однако, когда я попробовал groovy script.groovy, он не удался. Кажется, он работает только тогда, когда я в ~/mydirectory, и делаю groovy groovy/script.groovy. Таким образом, это работает ... но почему это нужно запускать именно так? – neastin