Я использовал плагин leiningen localrepo для установки моего собственного класса java в качестве файла jar. Кажется, это сработало хорошо, так как оно устанавливается в ~/.m2
, как видно из приведенной ниже команды.Включая локальный файл jar в проекте Clojure
lein localrepo list | grep myJunk
$ myJunk/exp (1.0.0)
я затем включить следующую строку в project.clj
[myJunk/exp "1.0.0"]
Наконец я включаю следующее в моем .clj
файле.
(ns exp.exp-test
(:use [exp.core]
[clojure.test])
(:import [com.curry.expenses Expense]))
Когда я пытаюсь запустить импорт я получаю следующее сообщение об ошибке:
java.lang.ClassNotFoundException: com.curry.expenses.Expense
Это начало моего класса Java, из которого я сгенерировал файл фляги.
package com.curry.expenses;
public class Expense { ... }
Теперь мой вопрос, что мне не хватает для того, чтобы иметь возможность использовать этот класс в моем проекте Clojure?
Update: Это содержимое сгенерированного файла .pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>myJunk</groupId>
<artifactId>exp</artifactId>
<version>1.0.0</version>
<name>exp</name>
</project>
Трудно сказать, что здесь не так. Заявления на импорт IIRC должны быть в скобках вроде: (: import (com.curry.expenses Expense)). Если это не имеет никакого значения, возможно, вы можете опубликовать сгенерированный файл .pom для своей банки? – sveri
Я обновил вопрос с содержимым файла pom. использование круглых скобок не помогло. – user3139545
Вы заглянули в сгенерированный файл jar? Является ли класс в пути, который отражает имя пакета внутри банки? – sveri