У меня есть исполняемый файл .net 472, который использует пакет nuget https://www.nuget.org/packages/Stanford.NLP.NER/.
var classifierPath = (config.ClassifierDirectory ?? DEFAULT_CLASSIFIER_DIRECTORY) + @"\english.all.3class.distsim.crf.ser.gz";
_entityClassifier = CRFClassifier.getClassifierNoExceptions(classifierPath);
Это прекрасно работает в Windows.
Однако, когда я создаю LinuxDocker контейнер и запустить его на моно Я получаю это исключение:
Произошла ошибка при обработке запроса.Ошибка: edu.stanford.nlp.io.RuntimeIOException: java.io.IOException: Невозможно открыть «Stanford \ Classifiers \ english.all.3class.distsim.crf.ser.gz» в качестве пути к классу, имени файла или URL-адреса
Я проверил, и файл определенно существует в контейнере Docker.
Вот мой файл Docker:
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";
работает абсолютно нормально!