我使用Gradle编写了一个小型Java应用程序来构建它。该应用程序来自this tutorial,包含2个类:HelloWorld(主类)和Greeter。 from matplotlib import style
from matplotlib import pylab as plt
import numpy as np
import pandas as pd
style.use('ggplot')
filename='total_watt.csv'
date=[]
number=[]
import csv
with open(filename, 'rb') as csvfile:
df = pd.read_csv('total_watt.csv', parse_dates=[0], index_col=[0])
df.resample('1D', how='sum')
for row in df:
if len(row) == 2 :
date.append(row[0])
number.append(row[1])
number=np.array(number)
import datetime
for ii in range(len(date)):
date[ii]=datetime.datetime.strptime(date[ii], '%Y-%m-%d %H:%M:%S')
plt.plot(date,number)
plt.title('Example')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()
文件包含2个部分(以及其他部分,目前无关紧要):
build.gradle
和
apply plugin: 'application'
mainClassName = 'hello.HelloWorld'
(这是必要的,因为HelloWorld类导入了org.joda.time.LocalTime类)。
我可以使用dependencies {
compile "joda-time:joda-time:2.2"
}
构建应用,并使用gradle build
运行它。一切都很好,我得到了结果。但是,当我尝试使用gradle run
运行它时,我收到错误java -jar HelloWorld.jar
。 StackOverflow上的解决方案之一建议将文件作为
No main manifest attribute
或
java -cp HelloWorld.jar hello.HelloWorld
第一个返回java -cp HelloWorld.jar HelloWorld
,第二个返回Could not find or load main class HelloWorld
。 JAR存档包含以下文件:
java.lang.NotClassDefFoundError" org/joda/time/LocalTime
我不知道为什么gradle不会将有关主类的信息放入清单文件中。你有什么建议吗?代码直接来自教程,所以应该没问题,但事实并非如此。我再说一遍,通过gradle运行应用程序没有任何问题。
答案 0 :(得分:2)
发生此错误是因为在运行org.joda.time.LocalTime
时未将hello.HelloWorld
添加到类路径中。
gradle run
distZip
任务准备分发,解压缩并使用sh或bat脚本运行准备好的工件。