JRuby와 Java 응용 프로그램간에 하이브리드를 만들려고하므로 한 번에 하나의 구성 요소 만 마이그레이션 할 수 있습니다. 내가 지금 당장하려고하는 것은 정말 간단합니다, 여기에 루비 클래스입니다 :Java 웹 프로젝트에 Ruby 클래스를 배포하는 방법
<?page title="Hello, Ruby!" contentType="text/html;charset=UTF-8"?>
<zk>
<window title="Hello Ruby!!" border="normal" width="200px" apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('eu.netprophecy.test.RubyViewModel')">
<label value="@load(vm.greeting)"/>
</window>
</zk>
: 은 '자바'나는 ZK 프로젝트에서이보기 모델을 사용할 수 있도록하려면
java_package 'eu.netprophecy.test'
class RubyViewModel
java_signature 'String getGreeting()'
def getGreeting
puts "Hello, ZK, from Ruby!"
end
end
을 필요로
marbler
으로 jar 파일을 만들려고했는데 프로젝트 이름이 앞에있는 디렉토리에 java 바이트 코드가있는 .class 파일을 넣고 예상되는 패키지 구조를 뒤범벅합니다 (이 경우 EJB/eu/netprophecy/test를 얻습니다)./RubyViewModel, 이는 Java 코드에서 생성 된 Java 클래스를 사용할 수 없음을 의미합니다).
더 나은 방법이 있다면 누구나 알 수 있습니까? 아니면 수동으로 항아리를 만들어야합니까?
문제가 아닌 JRuby를 내 사용할 수있는 방법으로 그것을 포장입니다 전쟁 ... – Kjir
미안하지만, 당신이 말한대로 나에게 명확한 방법으로 질문을 세련 했어야했다 : "자바 코드에서 클래스를 사용할 수 없다" 나는 당신의 의견으로 생각한다. 이 시점에서 당신이 찾고있는 것에 답하기 위해 "복잡합니다". 임베디드 jruby 컨테이너를 부팅하고, 패키지를 패키징 한 곳마다 스크립트를로드하도록 설정 한 다음 바이트 코드를 생성하고 웹 응용 프로그램의 클래스 로더가 생성 된 클래스를 확인하는지 확인하십시오. – kares
나는 또한 얼간이가있는 항아리를 만들었다 고 언급했다. "marbler로 항아리를 만들려고 시도했지만 프로젝트 이름이있는 디렉토리에 클래스를 배치하여 예상되는 패키지 구조를 엉망으로 만들었습니다." 하지만 나는 . – Kjir