delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2004/08/27/13:58:12

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Date: Fri, 27 Aug 2004 13:57:55 -0400 (EDT)
From: Igor Pechtchanski <pechtcha AT cs DOT nyu DOT edu>
Reply-To: cygwin AT cygwin DOT com
To: Nicolas Roche <roche AT act-europe DOT fr>
cc: Yung Leem <leemy78 AT yahoo DOT com>, cygwin AT cygwin DOT com
Subject: Re: help on makefile
In-Reply-To: <412F2E2C.1080104@act-europe.fr>
Message-ID: <Pine.GSO.4.61.0408271342320.6181@slinky.cs.nyu.edu>
References: <20040827084755 DOT 36035 DOT qmail AT web11506 DOT mail DOT yahoo DOT com> <412F2E2C DOT 1080104 AT act-europe DOT fr>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 2.39

On Fri, 27 Aug 2004, Nicolas Roche wrote:

> Yung Leem wrote:
> > Hello to all cygwin experts,
> >
> > I am a newbie cygwin user that's having a problem compiling a java source.
> > I am running a makefile that's calling "javac -cp [some_dir]
> > /cygdrive/c/blah/myclass.java"
> > that's complaining about not being able to find that file.  Being familiar
> > with unix development,
> > I assumed that the shell process would spawn the javac process, but I think
> > my guess is wrong.

No, it's right, the program does get spawned by the shell.  What you seem
to mean is that you assumed that there would be a Cygwin javac program
that would understand the POSIX pathnames, which is an incorrect
assumption.

> > What really seems to happen is that javac gets called from Windows XP (the
> > system I am using) and javac (from windows xp process) tries to compile
> > that /cygdrive/c/blah/myclass.java file, and
> > obviously fails to find that file.  What are the options I have?
>
> your javac program is not a cygwin program so it won't understand the cygwin
> like path. One solution is to use cygpath -w to translate cygwin-like path to
> windows-like path.

Correct, see <http://cygwin.com/cygwin-ug-net/using-effectively.html>.
Or you can use the java wrapper scripts I posted earlier (see
<http://cygwin.com/ml/cygwin/2003-01/msg00174.html> or the wrappers/java
directory in the cygwin-apps CVS repository).  These wrappers make java*
look like the Unix java that understands Unix (POSIX) paths, both on the
command line, and in variables such as $CLASSPATH, and does translations
automatically.  One thing the scripts don't do is detect where your java
is installed, so you'll have to edit them to specify that location.

> > I am really freaking out that something like LD_LIBRARY_PATH,
> > CLASSPATH, or PATH variables use ":" colon as a delimeter, but windows
> > file systems recognize ":" as a drive name not as a delimeter. So
> > having something like "export
> > CLASSPATH=c:/windows:c:/temp:c:/blah:$CLASSPATH" will be a nightmare.
> > I need some advise.  Thanks in advance for answering my question.
>
> Cygwin handle very well the path separators. If you do in cygwin bash
> $ export CLASSPATH=c:/windows:c:/temp:c:/blah:$CLASSPATH

Not quite true.  First off, if the above were translated as a path (e.g.,
by "cygpath -wp", the colons (":") after the drive letters would be turned
into semicolons, with all the resulting havoc.  There are three solutions:
one is to set the CLASSPATH using Windows notation (don't forget to escape
the semicolons [";"], or the shell will interpret them as command
separators), the other is to use the /cygdrive/c notation instead of the
c: notation, and translate it using "cygpath -wp" (e.g.,
CLASSPATH="`cygpath -wp /cygdrive/c/windows:/cygdrive/c/temp:/cygdrive/c/blah`;$CLASSPATH"
), and the third is to use the abovementioned java wrapper scripts which
will do the above for you automatically.

> you can launch a windows shell from cygwin and see that the var have been
> translated correctly (: -> ;)

Only $PATH and a couple of other variables are translated in this way.
$CLASSPATH isn't one of them, as you can easily verify.
HTH,
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha AT cs DOT nyu DOT edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor AT watson DOT ibm DOT com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski, Ph.D.
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"Happiness lies in being privileged to work hard for long hours in doing
whatever you think is worth doing."  -- Dr. Jubal Harshaw

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019