Getting this error regarding duck-streams/spit ...

76 views
Skip to first unread message

Victor Olteanu

unread,
Oct 25, 2010, 10:09:00 PM10/25/10
to clo...@googlegroups.com
Hi friends,

I am getting the following error and was hoping somebody may be able to assist:

java.lang.IllegalStateException: spit already refers to: #'clojure.contrib.duck-streams/spit in namespace: datatool.api (api.clj:1)


I realized it's because clojure.contrib.duck-streams/spit is overriding clojure.core/spit.
It used to be just a warning when I start jetty, but now it is preventing my app to run. (jetty starts, but when I try accessing the app in the browser, I get that error)

Would you have any idea about how to solve it?

FYI what I have in my datatool/api.clj file is:

(ns datatool.api
  (:use compojure.core)
  (:use hiccup.core)
  (:use hiccup.page-helpers)
  (:use [ring.middleware reload stacktrace file file-info])
  (:use datatool.db)
  (:use clojure.contrib.json)
  (:use clojure.contrib.duck-streams))


Thank you,
Victor

Michael Ossareh

unread,
Oct 25, 2010, 10:25:57 PM10/25/10
to clo...@googlegroups.com
On Mon, Oct 25, 2010 at 19:09, Victor Olteanu <blues...@gmail.com> wrote:

java.lang.IllegalStateException: spit already refers to: #'clojure.contrib.duck-streams/spit in namespace: datatool.api (api.clj:1)


Hi Victor,

I solved this issue by using (require) instead of (use). i.e.

(ns myapp
 (require [other-ns :as ns]))

Then whenever you access a function in the other-ns you prefix it with ns/function.

There may be other ways to solve this though.

Victor Olteanu

unread,
Oct 25, 2010, 10:59:59 PM10/25/10
to clo...@googlegroups.com
Thank you.

The following statement worked for me:
(:require [clojure.contrib.duck-streams :as d])

As I was using slurp and slurp*, I then had to do the following:

use the form "d/slurp*" instead (prefixed with d/)
use "slurp" without a change

This brings up a related point - I can see that there are functions with the same name in different packages, which I believe it's quite unfortunate. There is slurp in clojure.core and there is duck-streams/slurp* , along with other functions such as spit...

I hope this kind of things might be addressed in future versions of Clojure...

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Btsai

unread,
Oct 26, 2010, 12:46:42 AM10/26/10
to Clojure
I don't think it's a mistake or accident that spit exists in
clojure.core. In 1.2, duck-streams became deprecated and functions
such as spit were incorporated into clojure.core:

http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/spit
http://clojure.github.com/clojure-contrib/duck-streams-api.html

Are you using anything beyond spit and slurp*? If not, I think you
can switch to clojure.core's slurp and spit and drop duck-streams
altogether.

Dave Ray

unread,
Oct 26, 2010, 8:51:57 AM10/26/10
to clo...@googlegroups.com
Hey.

Until this message, I hadn't noticed that duck-streams was deprecated.
Is the stuff in clojure.java.io the "official" replacement for that
functionality? So now rather than duck-streams/read-lines, I'd
manually combine with-open, clojure.java.io/reader, and line-seq?

Just checking.

Thanks,

Dave

Sean Devlin

unread,
Oct 26, 2010, 9:39:35 AM10/26/10
to Clojure
The stuff in Clojure.java.io would be the preferred tool, yes.
However, if contrib has something that solves your problem, go ahead
and use it. Be careful though, because contrib is much more likely to
change than something officially in core.

On Oct 26, 8:51 am, Dave Ray <dave...@gmail.com> wrote:
> Hey.
>
> Until this message, I hadn't noticed that duck-streams was deprecated.
> Is the stuff in clojure.java.io the "official" replacement for that
> functionality? So now rather than duck-streams/read-lines, I'd
> manually combine with-open, clojure.java.io/reader, and line-seq?
>
> Just checking.
>
> Thanks,
>
> Dave
>
> On Tue, Oct 26, 2010 at 12:46 AM, Btsai <benny.t...@gmail.com> wrote:
> > I don't think it's a mistake or accident that spit exists in
> > clojure.core.  In 1.2, duck-streams became deprecated and functions
> > such as spit were incorporated into clojure.core:
>
> >http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/...

Victor Olteanu

unread,
Oct 26, 2010, 2:44:11 PM10/26/10
to clo...@googlegroups.com
Thank you Btsai. I checked both 
and 
and couldn't find any reference to deprecation.
If you can confirm that this deprecation was made "official" then we could update those docs so other people won't run into these same issues.

Victor

Btsai

unread,
Oct 26, 2010, 3:48:35 PM10/26/10
to Clojure
I'm fairly positive duck-streams is deprecated, as it is no longer
present in the clojure-contrib git repository:

http://github.com/clojure/clojure-contrib/tree/master/modules/

http://richhickey.github.com/clojure-contrib/ doesn't have the
deprecation info most likely because it is the documentation for the
original (now outdated) clojure-contrib repository, and doesn't have
1.2 info.

http://clojure.github.com/clojure-contrib/ is the documentation for
the current repository.

clojuredocs should probably be updated to include the deprecation
info, and also have its link to clojure-contrib point to the current
repository.

On Oct 26, 12:44 pm, Victor Olteanu <bluestar...@gmail.com> wrote:
> Thank you Btsai. I checked bothhttp://richhickey.github.com/clojure-contrib/io-api.html#clojure.cont...
> andhttp://clojuredocs.org/clojure_contrib/clojure.contrib.duck-streams/s...
> and couldn't find any reference to deprecation.
> If you can confirm that this deprecation was made "official" then we could
> update those docs so other people won't run into these same issues.
>
> Victor
>
>
>
>
>
>
>
> On Tue, Oct 26, 2010 at 12:46 AM, Btsai <benny.t...@gmail.com> wrote:
> > I don't think it's a mistake or accident that spit exists in
> > clojure.core.  In 1.2, duck-streams became deprecated and functions
> > such as spit were incorporated into clojure.core:
>
> >http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/...
> > clojure+u...@googlegroups.com<clojure%2Bunsu...@googlegroups.com >

Tom Faulhaber

unread,
Oct 27, 2010, 1:46:05 AM10/27/10
to Clojure
You remind me that I need to mark http://richhickey.github.com/clojure...
as obsolete and redirect users to the new place.

Zack Kim and I are working to have clojuredocs pull data from the
autodoc system and, at that point, I assume that he'll add deprecation
info over there as well.

Sorry for any confusion! Clojure's still a fast moving target.

Tom

On Oct 26, 12:48 pm, Btsai <benny.t...@gmail.com> wrote:
> I'm fairly positive duck-streams is deprecated, as it is no longer
> present in the clojure-contrib git repository:
>
> http://github.com/clojure/clojure-contrib/tree/master/modules/
>
> http://richhickey.github.com/clojure-contrib/doesn't have the
> deprecation info most likely because it is the documentation for the
> original (now outdated) clojure-contrib repository, and doesn't have
> 1.2 info.
>
> http://clojure.github.com/clojure-contrib/is the documentation for

Btsai

unread,
Oct 27, 2010, 2:57:24 AM10/27/10
to Clojure
Awesome! Thanks for the great work, Tom :) clojuredocs has quickly
become my go-to reference source.

On Oct 26, 11:46 pm, Tom Faulhaber <tomfaulha...@gmail.com> wrote:
> You remind me that I need to markhttp://richhickey.github.com/clojure...
> as obsolete and redirect users to the new place.
>
> Zack Kim and I are working to have clojuredocs pull data from the
> autodoc system and, at that point, I assume that he'll add deprecation
> info over there as well.
>
> Sorry for any confusion! Clojure's still a fast moving target.
>
> Tom
>
> On Oct 26, 12:48 pm, Btsai <benny.t...@gmail.com> wrote:
>
>
>
>
>
>
>
> > I'm fairly positive duck-streams is deprecated, as it is no longer
> > present in the clojure-contrib git repository:
>
> >http://github.com/clojure/clojure-contrib/tree/master/modules/
>
> >http://richhickey.github.com/clojure-contrib/doesn'thave the
> > deprecation info most likely because it is the documentation for the
> > original (now outdated) clojure-contrib repository, and doesn't have
> > 1.2 info.
>
> >http://clojure.github.com/clojure-contrib/isthe documentation for

zkim

unread,
Oct 30, 2010, 5:59:20 AM10/30/10
to Clojure
Looks like I'm a bit late to the party on this one.

ClojureDocs, as Tom mentioned, dosen't currently track the :deprecated
metadata entry, which will be fixed once clojuredocs is able to
consume autodoc's output.

Apologies for the confusion.

-Zack

On Oct 27, 12:57 am, Btsai <benny.t...@gmail.com> wrote:
> Awesome!  Thanks for the great work, Tom :)  clojuredocs has quickly
> become my go-to reference source.
>
> On Oct 26, 11:46 pm, Tom Faulhaber <tomfaulha...@gmail.com> wrote:
>
>
>
>
>
>
>
> > You remind me that I need to markhttp://richhickey.github.com/clojure...
> > as obsolete and redirect users to the new place.
>
> > Zack Kim and I are working to have clojuredocs pull data from the
> > autodoc system and, at that point, I assume that he'll add deprecation
> > info over there as well.
>
> > Sorry for any confusion! Clojure's still a fast moving target.
>
> > Tom
>
> > On Oct 26, 12:48 pm, Btsai <benny.t...@gmail.com> wrote:
>
> > > I'm fairly positive duck-streams is deprecated, as it is no longer
> > > present in the clojure-contrib git repository:
>
> > >http://github.com/clojure/clojure-contrib/tree/master/modules/
>
> > >http://richhickey.github.com/clojure-contrib/doesn'thavethe
> > > deprecation info most likely because it is the documentation for the
> > > original (now outdated) clojure-contrib repository, and doesn't have
> > > 1.2 info.
>
> > >http://clojure.github.com/clojure-contrib/isthedocumentation for
Reply all
Reply to author
Forward
0 new messages