Java & Mac

ric07

Power Member
Bem, antes de me começar a chatear...feito mula a olhar para um Mac, venho aqui tentar pedir a vossa ajuda.

Desde que comprei o mac, que ainda nao tinha começado a trabalhar em java nele. Pois é, comecei hoje, ou tentei...

Instalei o NetBeans, e la fui eu tentar "importar" um projecto meu...acabei por desistir, nem vale a pena falar do assunto...de certeza que é uma questao de ver com mais calma...e nao importar directamente atraves de um ficheiro Ant.

...entao la fui eu para a maneira mais basica de todas...fui para o terminal tirar o pó aos comandos javac e java e tal.

Compilei a primeira classe que nao precisava de mais nenhuma outra e tudo ok.

Vou a compilar uma segunda classe que ja depende da anterior...e ele queixa-se que a outra classe nao existe.

Ora pensei eu...deve ser por causa da CLASSPATH mal definida. Logo aqui, nao faço ideia como se muda a CLASSPATH...so windows sei como é....no linux fazia la uns export e tal...no mac ja tentei os export e ainda nao obtive soluçao.

Bem, entao fui para a outra forma basica... javac -cp...ou seja, indicar directamente qual a classpath.
Resultado? Continua a dizer que a outra classe nao existe.

Sinceramente nao entendo.


Alguem que trabalhe em java no mac que me possa dar umas luzes? Havera algo que seja diferente que eu tenha de saber?



Obrigado
 
Última edição:
Eu ja tenho o XCode instalado, e inclusive ja andei a brincar com ele.

Nao percebeste bem as minhas duvidas.

A questao é que os comandos javac deveriam funcionar...e se algo nao esta a funcionar, é porque alguma coisa se passa e que obviamente eu quero aprender.

Por exemplo...como alteramos o CLASSPATH?

Porque é que eu ao dizer directamente qual é o classpath qundo faço a chamada ao javac, ele continua a queixar-se?
 
mete aqui um exemplo do problema e os comandos que dás. Só assim poderemos ajudar-te.
Relativamente à tua dúvida...

para definir a variável classpath terás que executar o comando:
export CLASSPATH="/path/class.jar:/another/bubu.jar:."

podes adicioná-lo ao teu ~/.profile se for sempre a mesma.

Pq é que não usas o XCode?
 
Última edição:
Um dos motivos de nao usar o xcode é pq n uso só o mac. E assim fica mais simples para mim usar o mesmo IDE em todos os SO. Passar todo o projecto de maquina para maquina e assim.

Ja tinha tentado o export...mas quando tento ver se aquilo ficou bem definido, fazendo o echo, a coisa nao corre mt bem. Será que ja estou esquecido? Nao era so escrever "echo CLASSPATH"?
É que o que acontece é que ele faz integralmente o que a palavra echo significa :P ecoa-me a palavra CLASSPATH.

Mas bem, ja ando aqui a trabalhar no netbeans...tive de colocar os ficheiros todos à mao...estava a ter chatices porque ja tinha o ficheiro ANT e entao importava todo o projecto com ele. Mas depois dava-me aqui uns problemas.
 
Lá está...quem manda no mundo é o $ :P

Ja constatei que nao tenho nada de variaveis de ambiente, classpath nao tem nada...java_home nao existe...etc

Agora surgiu-me outra duvida...se estas variaveis todas nao existem, ou pelo menos nao aparentam existir...como é que os comandos "java" "javac" funcionam?

Tambem nao tenho nenhum ficheiro .profile (verifiquei os ficheiros invisiveis). Entao cada vez que faço login, ele faz a leitura do ficheiro .profile se existir? Ou sera que é outro ficheiro?
Nao era um .bashrc (que alias tb n tenho...nao tenho nada deste tipo de ficheiros)?
Isto de nao tocar nestas coisas faz anos hehe...se bem que tb nunca percebi bem do assunto.
 
Ele em mac vai ver o .bash_profile

Código:
echo $JAVA_HOME
/System/Library/Frameworks/JavaVM.framework/Home

Agora surgiu-me outra duvida...se estas variaveis todas nao existem, ou pelo menos nao aparentam existir...como é que os comandos "java" "javac" funcionam?

Estão no /usr/bin logo são reconhecidos na shell.
 
como só uso bash ponho sempre tudo na .profile. Aliás, nas novas versões do OS X, creio que por omissão criam a .profile.
 
A bash durante a inicialização lê (se existirem):

'/etc/profile'
'~/.bash_profile'
'~/.bash_login'
'~/.profile'

Desde que esteja num deles, não há problema.
 
Eu trabalho com Java e mac tb... tb desisti do netbeans, alem de ser lento demais, vivao os problemas!
portanto a soluçao chama-se "Eclipse"
até hoje, funcionou tudo correctamente...
:)
experimenta, n perdes nd é um IDE mto bom mesmo.
 
A diferença de desempenho do eclipse e netbeans é quase a mesma, pelo menos é o que eu noto.Mas na minha opiniao eclipse é melhor.
 
o eclipse é muito melhor que o netbeans! infelizmente o eclipse não dá é para trabalhar com Swing da mesma forma que o netbeans permite..

contudo o eclipse parece muito melhor para trabalhar.. por exemplo: quando se tem algum erro, o eclipse assiná-la-o de imediato, enquanto que o netbeans leva o seu tempo a reagir..
são segundos, mas em grandes projectos perde-se muito tempo!
 
O primeiro IDE com que eu trabalhei foi o Eclipse e gostei bastante.

Realmente noto essas falhas no Netbeans...ele demora a indicar erros e ate a retirar erros depois de corrigidos. No Eclipse era melhor.

O motivo para agora estar a usar o Netbeans foi o facto de ter experimentado o "utilitario" para a "constuçao" de interfaces...antes fazia o codigo todo a mao e primeiro que o resultado fosse o que eu queria, vai la vai...dai que experimentei e gostei bastante. Confesso que nao sei se o Eclipse tem...acho que é possivel acrescentar essa funcionalidade...mas como no Netbeans foi directo, fiquei-me por ele.
Alem de que gosto sempre de ir experimentando e pronto...agr tou a experimentar o Netbeans.

Outra coisa que me esta a acontecer agora no Mac foi eu ir compilar o meu codigo C onde tenho as coisas do JNI para o java e aquilo da-me logo erro a dizer que nao acha o jni.h. Estranho, porque ele existe no sistema.
Alguem me poderia dar umas luzes?

Obrigado mais uma vez.
 
Bem, vou vos deixar o ponto de situaçao.
De notar que entretanto ate instalei o Ubuntu via VMWare, e instalei no mesmo o JDK+NetBeans.

Tanto em Mac como em Ubuntu tenho exactamente os mesmos problemas:

- Quando tento compilar uma classe que necesita de outra, ele da-me erro, msm estando a indicar o respectivo classpath.
(Surgiu-me agr uma ideia, nem sei pq nao me lembrei disto antes...sera pelo facto de as mesmas estarem em packages...apesar de as duas estarem no mesmo package??)
De qualquer forma, isto nem me preocupa, pois esta td ok no Netbeans.

- O meu codigo C que necessita do jni.h simplesmente queixa-se que nao acha o ficheiro jni.h.
Ja verifiquei se existe no sistema...e existe. Ja configurei as variaveis de ambiente. Nao faço a minima ideia do problema e é urgente. Ainda estou para descobrir como raio tinha isto tudo a funcionar antes em Linux.


Mas bem, o que venho deixar aqui...é os ficheiros de .profile que criei, para o caso de alguem precisar de ajuda nesse campo.
Sinceramente a mim penso que nao me fizeram diferença nenhuma...mas nao sei...ahh...agr ja detecta o tools.jar para quando usar o Ant :P

Linux:

#!/bin/sh

JAVA_HOME="/usr/local/java"

JRE_HOME="usr/local/java/jre"

CLASSPATH="$JAVA_HOME:$JAVA_HOME/lib:$JRE_HOME/lib:."

MANPATH="$MANPATH:$JAVA_HOME/man"

JAVA_DOC="$JAVA_HOME/docs"

PATH="$PATH:$JAVA_HOME/bin:$JRE_HOME/bin"

export JAVA_HOME JRE_HOME CLASSPATH MANPATH JAVA_DOC PATH




Mac:

JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home"

CLASSPATH="$JAVA_HOME:$JAVA_HOME/lib:."

MANPATH="$MANPATH:$JAVA_HOME/man"

PATH="$PATH:$JAVA_HOME/bin"

export JAVA_HOME CLASSPATH MANPATH PATH



EDITADO:

Fui confirmar ao desktop com windows onde tenho o Ubuntu tb pelo VMWare...e lá nem sequer tenho configuradas as variaveis de ambiente...e nao tenho o minimo problema com o JNI.

Sinceramente nao entendo. RRR...ja começo a ferver.



EDITADO2:

Penso que ja descobri a falha. Em Darwin, em vez de se usar jni.h, tera de se usar JavaVM/jni.h, ficara entao algo do genero:

# include <JavaVM/jni.h>

Compila sem erros...agr se tudo o resto funciona igual...ainda nao sei


EDITADO3: (xii, que isto nunca mais acaba)

No Ubuntu, para tratar do JNI, instalei as packages referentes ao gcj e ja compila sem erros.
 
Última edição:
Back
Topo