Intellij idea 如何在intellij indea中创建groovy项目的jar

Intellij idea 如何在intellij indea中创建groovy项目的jar,intellij-idea,groovy,jar,Intellij Idea,Groovy,Jar,我已经使用intellij idea中的工件在项目设置中添加groovy库,为我的groovy项目创建了一个jar。但当我运行这个jar时,会出现以下异常 Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/GroovyObject at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.de

我已经使用intellij idea中的工件在项目设置中添加groovy库,为我的groovy项目创建了一个jar。但当我运行这个jar时,会出现以下异常

Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: groovy.lang.GroovyObject
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 13 more

可能问题在于创建jar。如何在intellij Idea中创建groovy项目的jar

使用Intellij Idea中的gradle支持

  • 在Intellij Idea中为您的项目提供的第一个主动gradle支持,如下所述:

  • 将源文件移动到默认的gradle目录树中。groovy源文件必须在
    src/main/groovy/…
    中移动,测试源文件必须在
    src/test/groovy/…
    中移动。(注:您可以将gradle配置为在默认目录以外的其他目录中查找源,但移动源更容易、更安全)

    在屏幕截图中,您可以看到java源代码的目录树。您可以使用
    groovy

  • 然后在项目的根目录中添加一个gradle生成文件

    基本的gradle文件(必须命名为build.gradle)可以如下所示:

     buildscript {
         repositories {
             mavenCentral()
         }
         dependencies {}
     }
    
     apply plugin: 'groovy'
     apply plugin: 'java'
     apply plugin: 'idea'
    
     jar {
         baseName = 'your_project_name'
         version =  '0.1.0'
         manifest {
             attributes("Build-Time": new Date().format("yyyy-MM-dd HH:mm:ss"),
                     "Build-Jdk": System.getProperty("java.version"),
                     "Built-By": System.getProperty("user.name"),
                     "Created-By": "Gradle",
             )
         }
     }
    
     repositories {
         mavenCentral()
     }
     // java version dependency
     sourceCompatibility = 1.7
     targetCompatibility = 1.7
    
     dependencies {
         // your local jar dependency
         compile files('./lib/your_jar.jar')
         // groovy
         compile 'org.codehaus.groovy:groovy-all:2.1.9'
    
         //other useful dependencies
         compile 'log4j:log4j:1.2.17'
         testCompile group: 'junit', name: 'junit', version: '4.11'
     }
    
     task wrapper(type: Wrapper) {
         gradleVersion = '2.3'
     }
    
  • 现在使用Intellij中的gradle插件

  • 完成构建后,您可以在
    build/libs/your_project\u name.jar


  • 您需要在配置了类路径的情况下运行jar。是否总是需要在配置了类路径的情况下运行jar。我只想运行双击罐子。所以你需要准备所谓的胖罐子。我怎么做??不管它有多胖:DIt可以通过适当的插件完成。这是给格拉德尔的。