рд▓реЗрдЦ рдкреНрд▓рдЧ-рдЗрди-рдореЙрдбреНрдпреВрд▓рд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рдврд╛рдВрдЪреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рд╕ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд▓рдЧ рдЗрди рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореВрд▓ рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рд╕ рд▓реЛрдбрд░ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдХреЛрдб рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
рдкреНрд░реЗрд░рдгрд╛
рдЕрдХреНрд╕рд░, рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдХреЛрдб рд▓реЛрдбрд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрдм рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХрд┐рд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд░реЛрдмреЛрдХреЛрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рдЧреЗрдо рдЧреЗрдо рдореЗрдВ рдХрд╕реНрдЯрдо рдЯреИрдВрдХ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреНрд▓рд╛рд╕ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдПрдХ рдЕрд▓рдЧ рдЯреИрдВрдХ рдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рджрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡реЗрджрди рд╕реЗ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓реЗрдЦ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реНрддрд░ рдкрд░ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЛрдб рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдмрд╛рдЗрдЯрдХреЛрдб рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдРрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓реЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд░реНрддрд╡реНрдпреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╡рд░реНрдЧ рдХреЛрдб рдХрд╛ рдЪрдпрди рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред
рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ / рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдмреВрдЯрд▓реЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдпрдЯреЗрдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА URLClassLoader рдореЗрдВ рдореМрдЬреВрджрд╛ рдХреЛ рднреА рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ URL рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрде рдкрд░ рдХрдХреНрд╖рд╛рдПрдВ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
рдЯреНрд░реЗрдирд┐рдВрдЧ
рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрд╡реЗрджрди рдЬреЗрдЖрд░рдИ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рдХрд╛ рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдПрдХ рдПрдХрд▓ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рд╣реЛрдЧрд╛ рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрдирдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣рд╛рдВ, рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ - рдЬрд╛рд╡рд╛ рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдПрдкреАрдЖрдИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХрд╕реНрдЯрдо рд▓реЛрдбрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:
1) рдХрд┐рд╕реА рднреА рд▓реЛрдбрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ java.lang.ClassLoader рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП;
2) рдХрд┐рд╕реА рднреА рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЙрдбрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рдирд╛;
3) java.lang.ClassLoader рд╡рд░реНрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддреНрдпрдХреНрд╖ рд▓реЛрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ - рдбрд┐рдлрд╛рдЗрдВрдбрдХреНрд▓рд╛рд╕ (...), рдЬреЛ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЛ java.lang.Class рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ;
4) рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЦреЛрдЬ рддрдВрддреНрд░ рдХреЛ java.lang.ClassLoader рд╡рд░реНрдЧ рдореЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ;
5) рд▓реЛрдбрд░ рдХреЗ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдпрд╣ java.lang.ClassLoader рд╡рд░реНрдЧ рдХреЗ findClass () рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕реВрдЪреА рдореЗрдВ рдЕрдВрддрд┐рдо рдЖрдЗрдЯрдо рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдбрдХреНрд▓рд╛рд╕ () рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдХреНрд▓рд╛рд╕ рд▓реЛрдбрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рддрд╛рддреНрдкрд░реНрдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреНрд░рдо рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рд╣реИ:
1) рдХреИрд╢ рдореЗрдВ рдПрдХ рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд░реНрдЧ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП findLoadedClass () рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ;
2) рдЕрдЧрд░ рдХреИрд╢ рдореЗрдВ рдХреЛрдИ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИ, рддреЛ GetParent ()ред рд▓реЛрдбрдХреНрд▓рд╛рд╕ () рдХреЛ рдкреИрд░реЗрдВрдЯ рд▓реЛрдбрд░ рдХреЛ рдмреВрдЯ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ;
3) рдпрджрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд▓реЛрдбрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рд╡рд░реНрдЧ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХреЗ, рддреЛ findClass () рдХреЛ рд╕реАрдзреЗ рдХрдХреНрд╖рд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд▓реЛрдбрд░реЛрдВ рдХреЗ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ - findClass () рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд╣рд▓реЗ рд▓реЛрдб (рд▓реЛрдб) рдХрд░реЗрдВ, рдлрд┐рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (рд░рди рдХрд░реЗрдВ), рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдПрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЕрдирд▓реЛрдб (рдЕрдирд▓реЛрдб) рдХрд░реЗрдВред рдпрд╣ рдХреЛрдб рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рд╣реИред рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗ рдЕрд▓рдЧ рдбрд┐рд▓реАрд╡рд░реА рдХреЗ рд▓рд┐рдП * .jar рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
public interface Module {
public static final int EXIT_SUCCESS = 0;
public static final int EXIT_FAILURE = 1;
public void load();
public int run();
public void unload();
}
* This source code was highlighted with Source Code Highlighter .
рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рд▓реЛрдбрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╡рд░реНрдЧ рдХреЛрдб рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрде рдХреЛ рдкрдердЯреЛрдмрд┐рди рдЪрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
import java.io. File ;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class ModuleLoader extends ClassLoader {
/**
* .
*/
private String pathtobin;
public ModuleLoader( String pathtobin, ClassLoader parent) {
super(parent);
this .pathtobin = pathtobin;
}
@Override
public Class<?> findClass( String className) throws ClassNotFoundException {
try {
/**
* -
*/
byte b[] = fetchClassFromFS(pathtobin + className + ".class" );
return defineClass(className, b, 0, b.length);
} catch (FileNotFoundException ex) {
return super.findClass(className);
} catch (IOException ex) {
return super.findClass(className);
}
}
/**
* www.java-tips.org/java-se-tips/java.io/reading-a-file-into-a-byte-array.html
*/
private byte [] fetchClassFromFS( String path) throws FileNotFoundException, IOException {
InputStream is = new FileInputStream( new File (path));
// Get the size of the file
long length = new File (path).length();
if (length > Integer.MAX_VALUE) {
// File is too large
}
// Create the byte array to hold the data
byte [] bytes = new byte [( int )length];
// Read in the bytes
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead= is .read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
// Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException( "Could not completely read file " +path);
}
// Close the input stream and return bytes
is .close();
return bytes;
}
}
* This source code was highlighted with Source Code Highlighter .
рдЕрдм рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд┐рдВрдЧ рдЗрдВрдЬрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдореЙрдбреНрдпреВрд▓ (.class рдлрд╝рд╛рдЗрд▓реЛрдВ) рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред
import java.io. File ;
public class ModuleEngine {
public static void main( String args[]) {
String modulePath = args[0];
/**
* .
*/
ModuleLoader loader = new ModuleLoader(modulePath, ClassLoader.getSystemClassLoader());
/**
* .
*/
File dir = new File (modulePath);
String [] modules = dir.list();
/**
* .
*/
for ( String module: modules) {
try {
String moduleName = module.split( ".class" )[0];
Class clazz = loader.loadClass(moduleName);
Module execute = (Module) clazz.newInstance();
execute.load();
execute.run();
execute.unload();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
* This source code was highlighted with Source Code Highlighter .
рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдорд╛рдирдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЪрд░рдгреЛрдВ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдкрде рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрд▓рд╛рд╕ рдореЙрдбреНрдпреВрд▓ (рдПрдкреАрдЖрдИ) рдХреЗ рд╕рд╛рде CLASSICATH рдореЗрдВ рдлрд╝рд╛рдЗрд▓ред
public class ModulePrinter implements Module {
@Override
public void load() {
System. out .println( "Module " + this .getClass() + " loading ..." );
}
@Override
public int run() {
System. out .println( "Module " + this .getClass() + " running ..." );
return Module.EXIT_SUCCESS;
}
@Override
public void unload() {
System. out .println( "Module " + this .getClass() + " inloading ..." );
}
}
* This source code was highlighted with Source Code Highlighter .
рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХрд▓ рд╡рд░реНрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрде рдХреЛ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдереЛрдбрд╝реА рд╡рд┐рдбрдВрдмрдирд╛ рд╣реИ
рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреЛрдб рд▓реЛрдбрд┐рдВрдЧ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдзреЛрдЦрд╛ рджреЗрдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдФрд░ рдХрд╛рдиреВрдиреА рддрд░реАрдХрд╛;)