2015-04-09 2 views
0

Я использовал плагин 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> 
+0

Трудно сказать, что здесь не так. Заявления на импорт IIRC должны быть в скобках вроде: (: import (com.curry.expenses Expense)). Если это не имеет никакого значения, возможно, вы можете опубликовать сгенерированный файл .pom для своей банки? – sveri

+0

Я обновил вопрос с содержимым файла pom. использование круглых скобок не помогло. – user3139545

+0

Вы заглянули в сгенерированный файл jar? Является ли класс в пути, который отражает имя пакета внутри банки? – sveri

ответ

1

Хорошо, Таким образом, мы заметили, по крайней мере одна ошибка.

У вас есть проект, и внутри этого проекта является классом FooBar.java с пространством имен foo.bar.baz то ожидается, что файл Foobar.java находится в структуре папок, как это: foo/bar/baz зеркальное пространство имен, наиболее вероятно, лежал в папке src.

Создание баночки из этого также будет иметь этот путь внутри банки, а внутри пути под foo/bar/baz будет FooBar.class.

Это ничего особенного для clojure, но для java вообще и clojure ожидает та же структура папок.

Смежные вопросы