我在使用 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" />
但结果没有改变。
我错过了什么?
我只需要预加载任何动态程序集(感谢 github 上 wasabii 的响应,它是 IKVM.Maven.Sdk 的主要赞助商/贡献者之一)
using org.slf4j;
// preload logging provider
Assembly.Load("slf4j.simple");
Logger logger = LoggerFactory.getLogger("IkvmLogTests");
logger.info("Hello, World!");