私はかなり単純な問題に苦しんでいますが、解決策を見つけることができません。 要は、最近私はGradleを学び始め、このビルドツールで初めてのIntellijプロジェクトを作成することに決めました。アプリケーションはGradleでビルドされましたが、IDEからは正常に起動しましたが、コンソールからは正常に起動しません
group 'ant.rozanski'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.fasterxml.jackson.core:jackson-databind:2.2.3'
classpath 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.3.0'
}
}
dependencies {
testCompile 'org.junit.jupiter:junit-jupiter-api:5.0.0-M3'
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.3.0'
compile 'com.fasterxml.jackson.core:jackson-databind:2.2.3'
compile 'org.apache.commons:commons-lang3:3.4'
}
そしてプロジェクトがのIntelliJ「ファイル名を指定して実行」コマンドからうまく起動します:build.gradleに定義されているように私は、外部ライブラリを使用しています。私は、コンソールからそれを実行しようとする。しかし、残念ながら、私はこの例外を受け取る:
Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonFactory
at model.AALJourney.setParams(AALJourney.java:40)
at model.AALJourney.doJob(AALJourney.java:24)
at Start.main(Start.java:11)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3 more
のGradleは、クラスパス上にそれらの外部LIBSを入れていないように見えます。どうして?これをどうすれば解決できますか?
ええ、私の問題を探しているときにどこかで見つけた 'buildscript'ブロック。私が言及したように、私は最近、Gradleを使い始めました。そして、Intellijを使わずに学習を始めたはずです。私の問題について: 'application'プラグインを使ってMainクラス('。\ gradlew run start'を使って)を走らせることができました。今私はいくつかのコマンドライン引数をアプリケーションに渡す必要があります。あなたはたぶんそれをする方法を知っていますか?残念ながら、Googleはあまり助けにはならない。ありがとうございました。 – 3voC
ビルドスクリプトの引数をハードコードすることもできますし、ビルドスクリプトの引数を半ハードコードすることもできます。プログラムにプロジェクトプロパティを指定し、 '-P'でgradleコマンドラインで設定することができます。 'run'の代わりに' installApp'を使うことができます。そして、ビルドしたアプリケーションを 'build/install /'で配布zipのように使うことができます。そして 'bin/'を実行し、エンドユーザのような任意のパラメータを与えます。あなたはGradle Userguideを読むべきです、それはGradleを学ぶための優れたリソースです。 – Vampire