尝试让日志记录与 slf4j、IKVM / IKVM.Maven.Sdk 一起使用 - 如何设置类路径?

问题描述 投票:0回答:1

我在使用 IKVM.Maven.SDK 时遇到问题 - 为了简化问题,我创建了一个基本的 .Net 6.0 控制台应用程序,它使用 slf4j 来记录“Hello World” - 按照 https://www.slf4j.org/manual .html,但在 .Net 中。

尽管将 MavenReferences 添加到

org.slf4j:slf4j-api
org.slf4j:slf4j-simple
,我仍然收到警告:

SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.

slf4j.org 说“打印此警告是因为在您的类路径上找不到 slf4j 提供程序(或绑定)。”

如何使用 IKVM / IKVM.Maven.SDK 设置类路径?

我的csproj文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="IKVM.Maven.Sdk" Version="1.5.5" />
    <MavenReference Include="org.slf4j:slf4j-api" Version="2.0.9" />
    <MavenReference Include="org.slf4j:slf4j-simple" Version="2.0.9" />
  </ItemGroup>
</Project>

我的Program.cs文件:

using org.slf4j;

Logger logger = LoggerFactory.getLogger("IkvmLogTests");
logger.info("Hello, World!");

我尝试添加一个用户环境变量设置为 Maven 下载的位置

$env:CLASSPATH: C:\Users\matt\.m2\repository

在 Visual Studio 中构建时,该目录会填充 slf4j-api 和 slf4j-simple 的 jar 文件(例如,对于 slf4j-api,文件

C:\Users\matt\.m2\repository\org\slf4j\slf4j-api\2.0.9\slf4j-api-2.0.9.jar
就在那里)。

我尝试添加

<PackageReference Include="IKVM" Version="8.6.2" />

但结果没有改变。

我错过了什么?

c# maven slf4j ikvm
1个回答
0
投票

我只需要预加载任何动态程序集(感谢 github 上 wasabii 的响应,它是 IKVM.Maven.Sdk 的主要赞助商/贡献者之一)

using org.slf4j;

// preload logging provider
Assembly.Load("slf4j.simple");

Logger logger = LoggerFactory.getLogger("IkvmLogTests");
logger.info("Hello, World!");
© www.soinside.com 2019 - 2024. All rights reserved.