我正在尝试设置一个简单的 Spring 应用程序以使用 SSL 并将其托管在 Digital Ocean 上。为什么我的应用找不到密钥库文件?
我设置的 Droplet 基于 Ubuntu 18.04。我使用 Letsencrypt 来获取证书和本指南来生成一个 PKCS 文件。我已经设置了我的 application.properties 文件来查看 jar 文件的当前目录,如下所示:
security.require-ssl:true
server.ssl.key-store:keystore.p12
server.ssl.key-store-password:<password>
server.ssl.key-store-type:PKCS12
server.ssl.key-alias:<alias>
Run Code Online (Sandbox Code Playgroud)
我希望它能够在配置的端口上运行并启动 Web 服务器。但是,我在堆栈跟踪中得到的是:
Caused by: java.io.FileNotFoundException: /root/software/gimmememe/target/keystore.p12 (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我在自己的 Windows 机器上使用相同的 keystore.p12 文件运行相同的 jar 时,它运行良好:
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9123 (https) with context path ''
meme.Application : Started Application in 4.985 seconds (JVM running for 5.464)
Run Code Online (Sandbox Code Playgroud)
我不认为这是 Ubuntu 机器上的权限问题,因为我尝试像这样设置密钥库文件的权限:
-rw-r--r-- 1 root root 4274 Mar 26 …Run Code Online (Sandbox Code Playgroud) 我遇到的问题尤其是 CSVHelper 库。
我的 csv 文件看起来像这样:
Number,Date,Account,Amount,Subcategory,Memo
,09/05/2017,XXX XXXXXX,-29.00,FT , [Sample string]
,09/05/2017,XXX XXXXXX,-20.00,FT ,[Sample string]
,08/05/2017,XXX XXXXXX,-6.30,PAYMENT,[Sample string]
Run Code Online (Sandbox Code Playgroud)
我正在用 CSVHelper 做的是这样的:
List<Transaction> result = new List<Transaction>();
using (TextReader fileReader = File.OpenText("data.csv"))
{
var csv = new CsvReader(fileReader);
result = csv.GetRecords<Transaction>().ToList();
}
Run Code Online (Sandbox Code Playgroud)
问题是,当它尝试在最后一行执行 GetRecord 时,我收到此异常:
Unhandled Exception: System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
at System.DateTime.Parse(String s, IFormatProvider provider, DateTimeStyles styles)
at CsvHelper.TypeConversion.DateTimeConverter.ConvertFromString(TypeConverterOptions options, String text)
at lambda_method(Closure )
at CsvHelper.CsvReader.CreateRecord[T]() …Run Code Online (Sandbox Code Playgroud)