読者です 読者をやめる 読者になる 読者になる

Grapeがうまく動かない

groovy

sqliteをgroovyから操作したくてGrapeでえいやー。と思ったのだけど、何故かCLASSPATH上に見つからない。commons-langで試したときは普通に使えたのに。どうもClass#forNameで引けないみたいなんでGroovyのクラスローディングの仕組みでうまくのせられてないとかなのかな?まったく同じ現象がML(Using @grab in groovy script with jdbc)にも報告されてた。

とりあえずこんなことすればいけるけど、ださいわー。

@Grab(group = "org.xerial", module = "sqlite-jdbc", version = "3.6.17.1")
// grapeがクラスパスを通してくれないので自分で通す。
def DRIVER_PATH="""${System.getProperty("user.home")}/.groovy/grapes/org.xerial/sqlite-jdbc/jars/sqlite-jdbc-3.6.17.1.jar"""
this.class.classLoader.rootLoader.addURL(new URL("file:///${DRIVER_PATH}"))