#java #gradle
Вопрос:
Вот мои файлы дерева :
src
--JaJson.java
build.gradle
Вот мой JaJson.java:
public class JaJson {
public static void main(String args[]) {
System.out.println("Hello");
}
public JaJson(){
System.out.println("what time is it ?");
}
public void getTime(){
System.out.println("Hammer time!");
}
}
Вот мой град.стройте :
apply plugin: 'java'
apply plugin: 'eclipse'
//apply plugin: 'java-library'
apply plugin: 'application'
mainClassName = "JaJson"
// tag::repositories[]
repositories {
mavenCentral()
}
// end::repositories[]
java {
toolchain {
languageVersion = JavaLanguageVersion.of(11)
}
}
sourceSets {
single{
java {
srcDir 'src'
}
}
}
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
'Main-Class': 'JaJson'
)
}
}
task compileSingle(type: JavaCompile) {
source = sourceSets.single.java
sourceSets.main.java.srcDirs = ['src']
classpath = sourceSets.main.compileClasspath
destinationDirectory = sourceSets.main.output.classesDirs[0]
}
compileJava {
options.release = 7
}
version = '1.2.1'
// tag::dependencies[]
dependencies {
implementation "joda-time:joda-time:2.2"
testImplementation "junit:junit:4.12"
}
Когда я создаю сборку gradle и :
java -jar buildlibsjajson-1.2.1.jar
Он отлично работает и печатает привет
Но когда я пытаюсь запустить класс только с :
java buildclassesjavamainJaJson.class
У меня есть :
Impossible to found or load main class for buildclassesjavamainJaJson.class
И перед каждой сборкой я открываю папку «Сборки».
rd /s /q build
gradle build amp;amp; java -jar buildlibsjajson-1.2.1.jar amp;amp; java buildclassesjavamainJaJson.class
с уважением
Ответ №1:
Запустить как
java -cp build/classes/main/java JaJason
Как объяснено в справке по команде Java, вам нужно указать имя основного класса, а не путь к основному классу. Если ваши классы не находятся в текущем каталоге (или в каталоге их пакетов прямо под текущим каталогом), вам необходимо указать путь к классам:
—путь к классу путь к классу,-путь к классу путь к классу или-путь к классу cp
[…] Если параметр путь к классу не используется и путь к классу не задан, то путь к пользовательскому классу состоит из текущего каталога (.).
Тем не менее, вы также можете запустить простой .java
файл прямо из командной строки:
java src/JaJson.java
Это полезно для быстрого запуска однофайловых программ без прохождения всего цикла сборки Gradle.