Gradle,错误无法找到或加载主 class 'test.Main'
Gradle, error could not find or load main class 'test.Main'
我在 one 个项目中实现了 Gradle。我将 Netbeans 8.02 与 gradle 插件一起使用。
结构应该是这样,资源位于 jgli/src/main/java/
下,资源位于 jgli/src/main/resources/
下
主要class是jgli/src/main/java/test/Main.java
如果我 运行 它通过 ide,它 运行 在 windows,它 在 linux。这就是我现在尝试通过控制台 运行 它的原因:
java -jar jgli.jar
但我不断收到:
Error could not find or load main class 'test.Main'
这是我的build.gradle
apply plugin: 'java'
sourceCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
// NetBeans will automatically add "run" and "debug" tasks relying on the
// "mainClass" property. You may however define the property prior executing
// tasks by passing a "-PmainClass=<QUALIFIED_CLASS_NAME>" argument.
//
// Note however, that you may define your own "run" and "debug" task if you
// prefer. In this case NetBeans will not add these tasks but you may rely on
// your own implementation.
if (!hasProperty('mainClass')) {
ext.mainClass = ''
}
repositories {
mavenCentral()
// You may define additional repositories, or even remove "mavenCentral()".
// Read more about repositories here:
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories
}
dependencies {
// TODO: Add dependencies here ...
// You can read more about how to add dependency here:
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies
testCompile group: 'junit', name: 'junit', version: '4.10'
compile 'org.jogamp.jogl:jogl-all-main:2.3.2'
compile 'org.jogamp.jogl:nativewindow-main:2.3.2'
compile 'org.jogamp.jogl:newt-main:2.3.2'
compile 'org.jogamp.gluegen:gluegen-rt-main:2.3.2'
}
jar {
manifest {
attributes 'Main-Class': 'test.Main'
}
}
我刚刚修改了 dependecies
部分并添加了清单部分。
我试图将 'test.Main'
添加到 ext.mainClass,但它什么也没改变..
Here你可以下载jar。
这是我的 MANIFEST.MF
:
Manifest-Version: 1.0
Main-Class: test.Main
Main.class 正确地位于 inside 罐子中。
Main.java 有包声明 package test;
也试过
apply plugin: 'application'
mainClassName = 'test.Main'
没有成功..
我错过了什么?
通常您在构建文件中设置 main-class 如下:
mainClassName = 'package.MainClassName'
你把它作为参数传递了吗? -> 有属性
然后你必须 运行 你的构建类似于: gradle -PmainClass=MyClass build
我刚找到你的 git repository and sources of your Main class,它似乎实现了一些接口,在你的依赖项中提供:
import com.jogamp.newt.event.KeyListener;
import com.jogamp.opengl.util.GLEventListener;
public class Main implements GLEventListener, KeyListener {
...
哪些来自您的一些依赖库:
compile 'org.jogamp.jogl:jogl-all-main:2.3.2'
compile 'org.jogamp.jogl:nativewindow-main:2.3.2'
compile 'org.jogamp.jogl:newt-main:2.3.2'
compile 'org.jogamp.gluegen:gluegen-rt-main:2.3.2'
在那种情况下,您的依赖项必须在您的 class 路径中,而您 运行 您的 Main class。尝试提供 -cp
选项来指向可以找到您的依赖项的路径。
我在 one 个项目中实现了 Gradle。我将 Netbeans 8.02 与 gradle 插件一起使用。
结构应该是这样,资源位于 jgli/src/main/java/
下,资源位于 jgli/src/main/resources/
主要class是jgli/src/main/java/test/Main.java
如果我 运行 它通过 ide,它 运行 在 windows,它
java -jar jgli.jar
但我不断收到:
Error could not find or load main class 'test.Main'
这是我的build.gradle
apply plugin: 'java'
sourceCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
// NetBeans will automatically add "run" and "debug" tasks relying on the
// "mainClass" property. You may however define the property prior executing
// tasks by passing a "-PmainClass=<QUALIFIED_CLASS_NAME>" argument.
//
// Note however, that you may define your own "run" and "debug" task if you
// prefer. In this case NetBeans will not add these tasks but you may rely on
// your own implementation.
if (!hasProperty('mainClass')) {
ext.mainClass = ''
}
repositories {
mavenCentral()
// You may define additional repositories, or even remove "mavenCentral()".
// Read more about repositories here:
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories
}
dependencies {
// TODO: Add dependencies here ...
// You can read more about how to add dependency here:
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies
testCompile group: 'junit', name: 'junit', version: '4.10'
compile 'org.jogamp.jogl:jogl-all-main:2.3.2'
compile 'org.jogamp.jogl:nativewindow-main:2.3.2'
compile 'org.jogamp.jogl:newt-main:2.3.2'
compile 'org.jogamp.gluegen:gluegen-rt-main:2.3.2'
}
jar {
manifest {
attributes 'Main-Class': 'test.Main'
}
}
我刚刚修改了 dependecies
部分并添加了清单部分。
我试图将 'test.Main'
添加到 ext.mainClass,但它什么也没改变..
Here你可以下载jar。
这是我的 MANIFEST.MF
:
Manifest-Version: 1.0
Main-Class: test.Main
Main.class 正确地位于 inside 罐子中。
Main.java 有包声明 package test;
也试过
apply plugin: 'application'
mainClassName = 'test.Main'
没有成功..
我错过了什么?
通常您在构建文件中设置 main-class 如下:
mainClassName = 'package.MainClassName'
你把它作为参数传递了吗? -> 有属性 然后你必须 运行 你的构建类似于: gradle -PmainClass=MyClass build
我刚找到你的 git repository and sources of your Main class,它似乎实现了一些接口,在你的依赖项中提供:
import com.jogamp.newt.event.KeyListener;
import com.jogamp.opengl.util.GLEventListener;
public class Main implements GLEventListener, KeyListener {
...
哪些来自您的一些依赖库:
compile 'org.jogamp.jogl:jogl-all-main:2.3.2'
compile 'org.jogamp.jogl:nativewindow-main:2.3.2'
compile 'org.jogamp.jogl:newt-main:2.3.2'
compile 'org.jogamp.gluegen:gluegen-rt-main:2.3.2'
在那种情况下,您的依赖项必须在您的 class 路径中,而您 运行 您的 Main class。尝试提供 -cp
选项来指向可以找到您的依赖项的路径。