This question说明了在运行任务以在项目中运行特定类时如何使用System.in
。
但对我来说,目前它不起作用:虽然我在application
中添加了build.gradle
插件和以下几行:
mainClassName = "misc.StreamsExp"
run{
standardInput = System.in
}
task stream( type: JavaExec, dependsOn: assemble ){
classpath sourceSets.main.runtimeClasspath
main = "misc.StreamsExp"
}
以下应用代码中readLine
的行应该是阻止但不是:
BufferedReader br = new BufferedReader(new InputStreamReader( System.in ));
String enteredLine = "";
while( enteredLine == null || ! enteredLine.equals( "q" )){
System.out.println( "spuds");
enteredLine = br.readLine();
}
......而是永远旋转的东西:
土豆
土豆
土豆
...
注意我在使用Java 8.91的Windows 10操作系统上。我已经尝试过Windows DOS控制台和Cygwin
NB2当我在Eclipse(Gradle STS Eclipse插件)中运行这个stream
任务时会发生同样的事情......但是当我执行Run as --> Java application
时却没有:然后阻塞按预期发生。
答案 0 :(得分:1)
哈......其中一个坐在你认为你会被永远难倒的地方,你找到解决方案2分钟后发布到SO!我会留在这里给其他人......
答案是将行import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt
from matplotlib import style
style.use('ggplot')
import datetime
start = datetime.datetime(2000, 10, 23)
end = datetime.datetime(2016, 10, 23)
df = web.DataReader("BAC", "yahoo", start, end)
df['100MA'] = pd.rolling_mean(df['Adj Close'], 100, min_periods=1)
df['STD'] = pd.rolling_std(df['Close'], 25, min_periods=1)
print(df.tail())
f,axarr = plt.subplots(2,1)
df[['Adj Close', '100MA']].plot(ax=axarr[0])
df['STD'].plot(ax=axarr[1])
plt.show()
放在您正在运行的任务中,如下所示:
standardInput =
奇怪的是,在Windows DOS终端中通过
跟随提示“spuds”>建筑物88%> :流
...这是我引用的问题中提到的已知“bug”。在Cygwin中,这个错误不会发生。
CAVEAT:这适用于Windows DOS终端和Cygwin终端......在Eclipse中运行定制task stream( type: JavaExec, dependsOn: assemble ){
standardInput = System.in
classpath sourceSets.main.runtimeClasspath
main = "misc.StreamsExp"
}
任务时, NOT 解决问题!