Jvm.NET.Asm 1.0.5

dotnet add package Jvm.NET.Asm --version 1.0.5
                    
NuGet\Install-Package Jvm.NET.Asm -Version 1.0.5
                    
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.5" />
                    
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.5" />
                    
Directory.Packages.props
<PackageReference Include="Jvm.NET.Asm" />
                    
Project file
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.5
                    
#r "nuget: Jvm.NET.Asm, 1.0.5"
                    
#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.5
                    
#: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.5
                    
Install as a Cake Addin
#tool nuget:?package=Jvm.NET.Asm&version=1.0.5
                    
Install as a Cake Tool

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

LGPL-3.0-only © XSY_xiaoqi

Product 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.

Version Downloads Last Updated
1.0.5 307 7/16/2026
1.0.4 97 7/15/2026
1.0.3 87 7/15/2026
1.0.2 94 7/15/2026
1.0.1 148 7/14/2026
1.0.0 115 7/14/2026