| 

.NET C# Java Javascript Exception

Einfache Distribution

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Einfache Distribution

ali321 - 08.05.2008 16:44
Hi,

ich wollte aus einem einfachen kleinen Programm eine Distribution zusammen bauen, so
dass ich es auf einem Rechner auch ohne Groovy Installation laufen lassen kann:

class distribution {
	static void main(args) {
		println "hallo"
	}
}

Wenn ich die Datei mit installiertem Groovy laufen lasse funtionierts

groovy distribution.groovy

Wenn ich jedoch nur die Class Datei auf den Rechner kopiere
gehts nicht

java -cp groovy-1.5.4.jar distribution
Exception in thread "main" java.lang.NoClassDefFoundError: distribution

was habe ich wohl vergessen ?

Danke


Re: Einfache Distribution

wilhelm.nagy@bfw.gv.at - 16.05.2008 14:04
Hallo ali321

am besten funktioniert IMHO folgendes:

Ein kleines Groovy-Programm (GroovyWrapper.groovy) (Gefunden in [docs.codehaus.org])
/*
 * Copyright 2002-2007 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      [www.apache.org]
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Wrap a script and groovy jars to an executable jar
 */
def cli = new CliBuilder()
cli.h( longOpt: 'help', required: false, 'show usage information' )
cli.d( longOpt: 'destfile', argName: 'destfile', required: false, args: 1, 'jar destintation filename, defaults to {mainclass}.jar' )
cli.m( longOpt: 'mainclass', argName: 'mainclass', required: true, args: 1, 'fully qualified main class, eg. HelloWorld' )
cli.c( longOpt: 'groovyc', required: false, 'Run groovyc' )

//--------------------------------------------------------------------------
def opt = cli.parse(args)
if (!opt) { return }
if (opt.h) {
  cli.usage();
  return
}

def mainClass = opt.m
def scriptBase = mainClass.replace( '.', '/' )
def scriptFile = new File( scriptBase + '.groovy' )
if (!scriptFile.canRead()) {
   println "Cannot read script file: '${scriptFile}'"
   return
}
def destFile = scriptBase + '.jar'
if (opt.d) {
  destFile = opt.d
}

//--------------------------------------------------------------------------
def ant = new AntBuilder()

if (opt.c) {
  ant.echo( "Compiling ${scriptFile}" )
  org.codehaus.groovy.tools.FileSystemCompiler.main( [ scriptFile ] as String[] )
}

def GROOVY_HOME = new File( System.getenv('GROOVY_HOME') )
if (!GROOVY_HOME.canRead()) {
  ant.echo( "Missing environment variable GROOVY_HOME: '${GROOVY_HOME}'" )
  return
}

ant.jar( destfile: destFile, compress: true, index: true ) {
  fileset( dir: '.', includes: scriptBase + '*.class' )

  zipgroupfileset( dir: GROOVY_HOME, includes: 'embeddable/groovy-all-*.jar' )
  zipgroupfileset( dir: GROOVY_HOME, includes: 'lib/commons*.jar' )
  // add more jars here

  manifest {
    attribute( name: 'Main-Class', value: mainClass )
  }
}

ant.echo( "Run script using: \'java -jar ${destFile} ...\'" )



T E S T
C:\temp>type gapp.groovy
println "hallo"

C:\temp>groovy GroovyWrapper -c -m gapp
     [echo] Compiling gapp.groovy
      [jar] Building jar: C:\temp\gapp.jar
     [echo] Run script using: 'java -jar gapp.jar ...'

C:\temp>java -jar gapp.jar
hallo
C:\temp>

\^/ili
(Wilhelm Nagy)


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Einfache Distribution" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.