рдХрдИ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкрд╛рдпрдЬрдирд┐рдпрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЧ рдорд┐рд▓рд╛ред
рдЬрдм рдореИрдВрдиреЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛, рддреЛ рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рджреВрд╕рд░реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдЧреА рдФрд░ рдЗрдирд╛рдпрдд рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдЧреАред
рдЬрдм рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкрд╛рдпрдерди рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред
(jnius.JavaException: No constructor matching your arguments, available: ['(ILjava/lang/String;)V', '(ILjava/lang/String;Ljava/lang/Object;[I)V'])
рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдкрд╣рд▓реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рддреЛ pyjnius рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЕрдЬрдЧрд░ рдХреЛрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрдирд╛рдпрдд рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕
public class SampleJavaClass {
public SampleJavaClass( int arg1, String arg2, int arg3, Object arg4, int... arg5 ) {
System.out.println("arg1: " + Integer.toString(arg1));
System.out.println("arg2: " + arg2);
System.out.println("arg3: " + arg3);
System.out.println("arg3: " + arg4);
System.out.println("arg4: " + arg5.toString());
}
// the constructor plans to use
public SampleJavaClass (int arg1, String arg2, Object arg3, int... arg4) {
System.out.println("arg1: " + Integer.toString(arg1));
System.out.println("arg2: " + arg2);
System.out.println("arg3: " + arg3);
System.out.println("arg4: " + arg4.toString());
}
public static void main(String[] args) {
SampleJavaClass test = new SampleJavaClass(1, "var2", null, 4);
}
}
рдкрд╛рдпрдЬрдирд┐рдпрд╕ рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рдХреЛрдб
import os
currentPath = os.getcwd()
classpath = currentPath + "/SampleJavaClass.class"
import jnius_config
jnius_config.set_classpath('.', classpath)
from jnius import autoclass
def main():
SampleJavaClass = autoclass("SampleJavaClass")
SampleJavaClass(1, "var2", None, 4)
print("Execution finished!")
if __name__ == "__main__":
main()
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдПрдХ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/kivy/pyjnius/blob/307659b13c1e5583fcb25603b7d3732265ffd4a0/tests/test_constructor.py#L54 рджреЗрдЦреЗрдВред
рдЬрдм pyjnius рдХрд┐рд╕реА рдореЗрдердб рдпрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рджрд┐рдП рдЧрдП рдирд╛рдо рдХреЗ рд╕рд╛рде 0, 1 рдпрд╛ рдорд▓реНрдЯреАрдкрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдпрд╛ рдореЗрдердб рд╣реИрдВред рдпрджрд┐ рдХреЗрд╡рд▓ 1 рд╣реИ рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реБрдП рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХрдИ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдХреЛрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрдХ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ; рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рджреЛрдиреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рдЪрдирд╛рдХрд╛рд░ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВред рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡рд╣ рд╕реНрдХреЛрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдХреЗрдд рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрд╛ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╡рд┐рдлрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдЦреБрд╢реА рд╕реЗ рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рдлрд┐рдХреНрд╕ рд╣реИред рдореИрдВ рдПрдХ рдкрд▓ рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдКрдВрдЧрд╛ред
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдПрдХ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?
рджреЗрдЦреЛ
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
рдореИрдВрдиреЗ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреА рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдПрдХ рдЕрднрд┐рдХрдерди рддреНрд░реБрдЯрд┐ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХреАред рдореИрдВрдиреЗ рдХрд╣рд╛рдБ рдЧрдбрд╝рдмрдбрд╝ рдХреА?
рддреНрд░реБрдЯрд┐
File "jnius/jnius_export_class.pxi", line 270, in jnius.JavaClass.__init__
File "jnius/jnius_export_class.pxi", line 319, in jnius.JavaClass.call_constructor
AssertionError
рдкрд╛рдпрдЬрдирд┐рдпрд╕ рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рдХреЛрдб
import os
currentPath = os.getcwd()
classpath = currentPath + "/SampleJavaClass.class"
import jnius_config
jnius_config.set_classpath('.', classpath)
from jnius import autoclass
def main():
SampleJavaClass = autoclass("SampleJavaClass")
SampleJavaClass(1, "var2", None, 4, signature="(ILjava/lang/String;Ljava/lang/Object;[I)V")
print("Execution finished!")
if __name__ == "__main__":
main()
рдпрд╣рд╛рдБ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб рд╣реИ:
requestedDefn = kwargs.pop('signature', None)
for definition, is_varargs in definitions:
found_definitions.append(definition)
d_ret, d_args = parse_definition(definition)
if requestedDefn == definition:
assert not is_varargs
scores=[]
score=1
scores.append((score, definition, d_ret, d_args, args))
break
рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдкреАрдЖрд░ рдореЗрдВ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред
@enjoybeta рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреАрдЖрд░ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рдХреА рд░реЗрдЦрд╛, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдХреЗрдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
@cmacdonald , рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ
рдореЗрд░реЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ - рдПрдХ рддреНрд╡рд░рд┐рдд рдЬрд╛рд╡рд╛ рдлрд╝реИрдХреНрдЯрд░реА рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ varargs рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ?
рд╡реИрд╕реЗ рднреА, рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд▓реА рдЬреЗрдирд┐рдпрд╕ рд░рд┐рд▓реАрдЬ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдЧреАред
рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░! рдПрдХ рдлрд╝реИрдХреНрдЯрд░реА рд╡рд┐рдзрд┐ рдЗрд╕рдХрд╛ рдзреНрдпрд╛рди рд░рдЦ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдЙрд╕ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдмрджрд▓рдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╡реЗ рдПрдХ рдЕрд▓рдЧ рд╕рд╣рд╛рдпрдХ-рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд░рддрд╛ рд╣реИред
рд╕рд╣рдордд, рдЕрдм рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЬрдм pyjnius рдХрд┐рд╕реА рдореЗрдердб рдпрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рджрд┐рдП рдЧрдП рдирд╛рдо рдХреЗ рд╕рд╛рде 0, 1 рдпрд╛ рдорд▓реНрдЯреАрдкрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдпрд╛ рдореЗрдердб рд╣реИрдВред рдпрджрд┐ рдХреЗрд╡рд▓ 1 рд╣реИ рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реБрдП рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХрдИ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдХреЛрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрдХ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ; рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рджреЛрдиреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рдЪрдирд╛рдХрд╛рд░ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВред рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡рд╣ рд╕реНрдХреЛрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдВрдХреЗрдд рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрд╛ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╡рд┐рдлрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдЦреБрд╢реА рд╕реЗ рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рдлрд┐рдХреНрд╕ рд╣реИред рдореИрдВ рдПрдХ рдкрд▓ рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдКрдВрдЧрд╛ред