[fpc-devel] JVM: Question regarding converted Java code

Sven Barth pascaldragon at googlemail.com
Wed Dec 28 23:28:51 CET 2011

Hello Jonas!

Today I've converted a third party jar file using javapp, which went 
without problems so far (I only need to convert another jar file, 
because there is a dependency).
When compiling I noticed a few warnings though:

=== output ===

bukkit.inc(1668,5) Warning: Constructor should be public
bukkit.inc(1669,5) Warning: Constructor should be public
bukkit.inc(1749,14) Warning: An inherited method is hidden by "procedure 
bukkit.inc(1751,14) Warning: An inherited method is hidden by "procedure 
bukkit.inc(2006,5) Warning: Constructor should be public
bukkit.inc(2007,5) Warning: Constructor should be public
bukkit.inc(2046,14) Warning: An inherited method is hidden by "procedure 

=== output ===

1) as it seems to be a rather usual practice in Java, would it be 
possible to disable the "Constructor should be public" warnings if the 
target cpu is the JVM?
2) in the code I converted the classes often seem to "reintroduce" 
methods that are available in parent classes or implemented interfaces 
with different result types without declaring the original method though.


=== Java source begin ===

public class Location implements Cloneable {


     public Location clone() {



=== Java source end ===

is converted to

=== Pascal source begin ===

   OBLocation = class external 'org.bukkit' name 'Location' (JLObject, 
     function clone(): OBLocation; overload; virtual;
     ... // <= other functions between
     function clone(): JLObject; overload; virtual;  // throws 

=== Pascal source end ===

Is this indeed correct? Does the compiler (or the JVM) indeed call the 
correct function in the end (in this case org.bukkit.Location.clone)?

[I have not tested what the compiler or the JVM does, I'm just curious 
at the moment regarding the warnings I get]


More information about the fpc-devel mailing list