我有一个.net 472可执行文件,它使用https://www.nuget.org/packages/Stanford.NLP.NER/ nuget程序包。
var classifierPath = (config.ClassifierDirectory ?? DEFAULT_CLASSIFIER_DIRECTORY) + @"\english.all.3class.distsim.crf.ser.gz";
_entityClassifier = CRFClassifier.getClassifierNoExceptions(classifierPath);
这在Windows上绝对可以正常工作。
但是,当我创建一个Linux docker容器并在mono上运行它时,会出现此异常:
处理请求时出错。 错误:edu.stanford.nlp.io.RuntimeIOException:java.io.IOException: 打不开 “ Stanford \ Classifiers \ english.all.3class.distsim.crf.ser.gz”作为类 路径,文件名或URL
我已经检查过,并且该文件肯定在docker容器内。
这是我的dockerfile:
FROM mono
RUN apt-get update
RUN mkdir /dotnet
WORKDIR /dotnet
ARG PROJECT_NAME
COPY $PROJECT_NAME/bin/Release/net472/publish .
ENV ENTRY_POINT=$PROJECT_NAME.exe
RUN rm config.json
RUN chmod a+rwx -R .
CMD mono $ENTRY_POINT
谁能建议这可能是什么原因,以及我该如何解决?
编辑:
我是一个白痴。我要做的就是从Windows路径更改为linux路径:
var classifierPath = (config.ClassifierDirectory ?? DEFAULT_CLASSIFIER_DIRECTORY) + @"/english.all.3class.distsim.crf.ser.gz";
工作绝对没问题!