package Ġjupyter . kotlin Ċ Ċ import Ġjava . io . File Ċ import Ġkotlin . reflect . K Class Ċ Ċ object ĠNative Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġlibrary Ġby Ġits Ġabsolute Ġpath ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload ( filename : ĠString ) Ġ= ĠSystem . load ( filename ) ĊĠĠĠ Ġfun Ġload ( file : ĠFile ) Ġ= ĠSystem . load ( file . absolute Path ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġlibrary Ġby Ġits Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload Library ( name : ĠString ) Ġ= ĠSystem . load Library ( name ) ĊĠĠĠ Ġfun Ġload Library ( name : ĠString , Ġpath : ĠFile ) Ġ= Ġload ( to AbsolutePath ( name , Ġpath )) ĊĠĠĠ Ġfun Ġload Library ( name : ĠString , Ġpath : ĠString ) Ġ= Ġload Library ( name , ĠFile ( path )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġlibrary Ġby Ġits Ġabsolute Ġpath Ġfrom Ġa Ġdifferent Ġclass loader ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload ( k Class : ĠK Class <* >, Ġfilename : ĠString ) Ġ= Ġload 0 ( k Class , Ġfilename , Ġtrue ) ĊĠĠĠ Ġfun Ġload ( k Class : ĠK Class <* >, Ġfile : ĠFile ) Ġ= Ġload 0 ( k Class , Ġfile . absolute Path , Ġtrue ) ĊĠĠĠ Ġfun Ġload ( java Class : ĠClass <* >, Ġfilename : ĠString ) Ġ= Ġload 0 ( java Class , Ġfilename , Ġtrue ) ĊĠĠĠ Ġfun Ġload ( java Class : ĠClass <* >, Ġfile : ĠFile ) Ġ= Ġload 0 ( java Class , Ġfile . absolute Path , Ġtrue ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġlibrary Ġby Ġits Ġname Ġfrom Ġa Ġdifferent Ġclass loader ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload Library ( k Class : ĠK Class <* >, Ġname : ĠString ) Ġ= Ġload 0 ( k Class , Ġname , Ġfalse ) ĊĠĠĠ Ġfun Ġload Library ( k Class : ĠK Class <* >, Ġname : ĠString , Ġpath : ĠFile ) Ġ= Ġload 0 ( k Class , Ġto AbsolutePath ( name , Ġpath ). absolute Path , Ġtrue ) ĊĠĠĠ Ġfun Ġload Library ( k Class : ĠK Class <* >, Ġname : ĠString , Ġpath : ĠString ) Ġ= Ġload Library ( k Class , Ġname , ĠFile ( path )) ĊĠĠĠ Ġfun Ġload Library ( java Class : ĠClass <* >, Ġname : ĠString ) Ġ= Ġload 0 ( java Class , Ġname , Ġfalse ) ĊĠĠĠ Ġfun Ġload Library ( java Class : ĠClass <* >, Ġname : ĠString , Ġpath : ĠFile ) Ġ= Ġload 0 ( java Class , Ġto AbsolutePath ( name , Ġpath ). absolute Path , Ġtrue ) ĊĠĠĠ Ġfun Ġload Library ( java Class : ĠClass <* >, Ġname : ĠString , Ġpath : ĠString ) Ġ= Ġload Library ( java Class , Ġname , ĠFile ( path )) ĊĊĠĠĠ Ġprivate Ġfun Ġto AbsolutePath ( name : ĠString , Ġpath : ĠFile ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrelative Filename Ġ= ĠSystem . map Library Name ( name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpath . resolve ( relative Filename ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload 0 ( k Class : ĠK Class <* >, Ġname : ĠString , Ġis Absolute : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġload 0 ( k Class . java , Ġname , Ġis Absolute ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload 0 ( java Class : ĠClass <* >, Ġname : ĠString , Ġis Absolute : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= ĠClassLoader :: class . java ĊĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġclazz . getDeclared Method ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" load Library ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . String :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmethod . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmethod . invoke ( null , Ġjava Class , Ġname , Ġis Absolute ) ĊĠĠĠ Ġ} Ċ } Ċ