MASES.JNetReflector 1.5.5

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global MASES.JNetReflector --version 1.5.5
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local MASES.JNetReflector --version 1.5.5
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=MASES.JNetReflector&version=1.5.5
nuke :add-package MASES.JNetReflector --version 1.5.5

JNet: Reflector

The tool is able to build .NET classes which reproduce the JVM class (Java, Scala, Kotlin, ...) counterpart.

Installation

To install the tool follows the instructions on https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools.

Usage

To use JNetReflector runs a command like the following:

  • dotnet tool

jnetreflector -OriginRootPath C:\myJars -OriginJavadocUrl "https://thehost/javadoc/" -JavadocVersion 11 -DestinationRootPath C:\ReflectionDestination

jnr -OriginRootPath C:\myJars -OriginJavadocUrl "https://thehost/javadoc/" -JavadocVersion 11 -DestinationRootPath C:\ReflectionDestination

Command switches available

jnr accepts the following command-line switch:

  • OriginRootPath: The origin path where Jars to be analyzed, and dependencies, are stored
  • OriginJavadocUrl: The base URL of the Javadoc to be associated to the classes
  • JavadocVersion: The version of the Javadoc to be associated to the classes, it means the Javadoc tool version used
  • OriginJavadocJARVersionAndUrls: A CSV list of keypair of JavadocVersion and OriginJavadocUrl, separated by |, associated to the JARs to be analyzed
  • DestinationRootPath: The destination root path where reflected classes will be stored
  • ClassesToAnalyze: A CSV list of full qualified class names to be analyzed
  • JarList: A CSV list of JAR to be analyzed or folders containing the JARs
  • ModulesToParse: A CSV list of module patterns to be parsed during analysis, it avoids the usage of OriginRootPath
  • NamespacesToAvoid: A CSV list of namespaces to be removed from analysis
  • ClassesToAvoid: A CSV list of classes to be removed during analysis
  • ClassesToAvoidInGenerics: A CSV list of classes to be removed during analysis from the classes which have generics types
  • ClassesToBeListener: A CSV list of class names to be treated as Listener
  • NamespacesInConflict: A CSV list of namespaces in conflict with class name: to this one will be added an "Ns" at the end
  • OnlyPropertiesForGetterSetter: The option forces the tool to convert into properties only getter/setter
  • ReflectDeprecated: The option forces the tool to write any constructor, method or field marked as deprecated, default is to avoid deprecated
  • AvoidCSharpGenericDefinition: The option forces the tool to reflect generics without create the C# generic definition
  • AvoidCSharpGenericClauseDefinition: The option forces the tool to reflect generics without create the clauses of C# generic definition
  • DisableGenericsInNonGenericClasses: The option disables generation of generic methods in non generic classes
  • DisableGenerics: The option forces the tool to disable any generic type
  • AvoidParallelBuild: The option forces the tool to disable parallel execution
  • DryRun: Execute everything, but do not write anything to disk
  • DoNotCamel: Does not use camelized names in methods, class and so on
  • TraceLevel: The level of traces to be reported: 0 - Critical ... 5 - Verbose
  • TraceTo: The file name where traces will be write, default write to console

JNet reflected classes

Many JNet classes are generated using JNetReflector. The JVM used to build the classes is the Temurin version 11 which is the minimum JVM version supported from JCOBridge. The command line interface used is:

jnetreflector -ModulesToParse org.,java. -DestinationRootPath .\src\net\JNet\Generated -OriginJavadocUrl "https://docs.oracle.com/en/java/javase/11/docs/api/" -JavadocVersion 11
-ClassesToBeListener java.util.Comparator,java.util.ServiceLoader$Provider,java.util.stream.DoubleStream$Builder,java.util.stream.IntStream$Builder,java.util.stream.LongStream$Builder,java.util.stream.Stream$Builder,javax.swing.Action,javax.management.NotificationFilter
-ClassesToAvoid java.time.chrono.Chronology,javax.swing.ToolTipManager,javax.swing.text.html.HTMLEditorKit$LinkController,javax.swing.plaf.basic.BasicTreeUI$MouseHandler,javax.swing.plaf.basic.BasicDesktopIconUI$MouseInputHandler,javax.swing.plaf.basic.BasicTabbedPaneUI$FocusHandler,javax.swing.plaf.basic.BasicComboBoxUI$KeyHandler,javax.swing.plaf.basic.BasicSliderUI$ComponentHandler,javax.swing.plaf.basic.BasicComboPopup$InvocationKeyHandler,javax.swing.plaf.basic.BasicTreeUI$KeyHandler,javax.swing.plaf.basic.BasicTreeUI$ComponentHandler,javax.swing.plaf.basic.BasicSplitPaneUI$FocusHandler,javax.swing.plaf.basic.BasicTabbedPaneUI$MouseHandler
-NamespacesToAvoid org.jcp.xml.dsig.internal,com.oracle,com.sun,org.mases,org.junit,org.hamcrest,org.burningwave,org.graalvm,org.slf4j,java.awt.peer
-NamespacesInConflict java.lang.module,java.awt.color,java.awt.desktop,java.awt.image,java.awt.event,java.awt.font
-ClassesToAvoidInGenerics java.time.chrono.ChronoLocalDateTime,java.time.chrono.ChronoZonedDateTime

Running environment for PowerShell users

The command above fails in PowerShell because the nested class separator ($) is used from PowerShell to substitute variable values. The previous command runs without problems in a Windows Command Prompt

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last updated
2.4.0 176 2/29/2024
2.3.0 158 2/20/2024
2.2.5 118 1/30/2024
2.2.4 99 1/27/2024
2.2.3 151 1/24/2024
2.2.2 152 1/24/2024
2.2.1 157 1/20/2024
2.2.0 148 1/17/2024
2.1.1 218 12/18/2023
2.1.0 180 11/25/2023
2.0.2 261 10/18/2023
2.0.1 208 7/11/2023
2.0.0 151 7/5/2023
1.5.5 195 5/5/2023
1.5.4 192 4/16/2023
1.5.3 200 4/10/2023
1.5.2 251 3/13/2023
1.5.1 277 2/9/2023
1.5.0 283 2/8/2023
1.4.15 335 11/21/2022
1.4.14 378 11/9/2022
1.4.13 349 11/9/2022
1.4.12 373 10/30/2022
1.4.11 409 10/27/2022
1.4.8 478 10/20/2022