Jvm.NET.Asm
1.0.4
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Jvm.NET.Asm --version 1.0.4
NuGet\Install-Package Jvm.NET.Asm -Version 1.0.4
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Jvm.NET.Asm" Version="1.0.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Jvm.NET.Asm" Version="1.0.4" />
<PackageReference Include="Jvm.NET.Asm" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Jvm.NET.Asm --version 1.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Jvm.NET.Asm, 1.0.4"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Jvm.NET.Asm@1.0.4
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Jvm.NET.Asm&version=1.0.4
#tool nuget:?package=Jvm.NET.Asm&version=1.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Jvm.NET.Asm
A C# port of the ASM bytecode manipulation framework. Parses, modifies and generates Java class files — no JVM required.
Install
<PackageReference Include="Jvm.NET.Asm" Version="1.0.2" />
Usage
Read a class file
using Jvm.NET.Asm;
var bytes = File.ReadAllBytes("Foo.class");
var reader = new ClassReader(bytes);
Console.WriteLine($"class: {reader.GetClassName()}");
Console.WriteLine($"super: {reader.GetSuperName()}");
Modify and write back
using Jvm.NET.Asm;
var reader = new ClassReader(File.ReadAllBytes("Foo.class"));
var writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);
reader.Accept(new ClassVisitor(writer)
{
// Override VisitMethod to intercept each method
public override MethodVisitor? VisitMethod(int access, string name, string descriptor,
string? signature, string[]? exceptions)
{
var mv = base.VisitMethod(access, name, descriptor, signature, exceptions);
if (name == "compute" && mv is not null)
return new MyMethodTransformer(mv);
return mv;
}
}, 0);
File.WriteAllBytes("Foo.class", writer.ToByteArray());
Generate a class from scratch
using Jvm.NET.Asm;
var writer = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
writer.Visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, "HelloGen", null, "java/lang/Object", null);
var mv = writer.VisitMethod(Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC,
"main", "([Ljava/lang/String;)V", null, null);
mv.VisitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
mv.VisitLdcInsn("Hello from generated class!");
mv.VisitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V");
mv.VisitInsn(Opcodes.RETURN);
mv.VisitMaxs(2, 1);
mv.VisitEnd();
writer.VisitEnd();
File.WriteAllBytes("HelloGen.class", writer.ToByteArray());
License
GPL-3.0-only © XSY_xiaoqi
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Jvm.NET.Asm:
| Package | Downloads |
|---|---|
|
Jvm.NET
A production-grade .NET library that embeds and controls an in-process JVM: invoke jars with arguments, modify bytecode at runtime, and listen to Java method/vm events. |
GitHub repositories
This package is not used by any popular GitHub repositories.