Bom, tenho instalado na minha máquina o Eclipse 64bits. Porém surgiu a necessidade de usar o Java 32bits. Gostaria de saber se tem como fazer com que o Eclipse 64bits aceite o java 32bits sem precisar instalar o eclipse 32bits.
Não é apenas setar nas preferências?
Como se ele nem deixa eu abrir o eclipse 64bits se eu estiver usando java 32 bits.
Você não pode misturar as duas coisas, infelizmente
Você pode instalar mais de uma versão do JDK, não pode?
Se não puder, você ainda pode apontar para o local onde os arquivos da versão x32 estão.
[quote=entanglement]Você não pode misturar as duas coisas, infelizmente
[/quote]
Nesse ponto o visual studio é bem superior, posso gerar executáveis para x86 e x64…
Espera um pouquinho - o Visual Studio GERA executáveis para x86, x64 (e antigas versões geravam para Itanium também). Mas ele É (acho que ainda é) um programa de 32 bits puro.
Só explicando por que é que existe um Eclipse 32 bits e um Eclipse 64 bits mas não um NetBeans 32 bits e um NetBeans 64 bits.
O NetBeans é um programa 100% Java e ele usa o Java que estiver instalado, desde que a versão do Java seja suficientemente elevada para ele poder rodar.
(Se não me engano, há um netbeans.exe mas ele serve apenas para iniciar o javaw.exe para a versão correta - não estou com um NetBeans instalado aqui).
O Eclipse é um programa que contém muito código nativo (o próprio eclipse.exe, várias DLLs etc.) e todo esse código nativo, devido a características do sistema operacional*, não pode ser misturado com o código nativo do Java que estiver em uma quantidade diferente de bits.
(Note que o Windows 95 conseguia misturar, usando um pouco de mágica, código de 32 e de 16 bits no mesmo processo - já tive de usar esse tipo de mágica, e não gostei muito do resultado. Mas o Windows XP, 2000, 2008, Vista, 7, 8 etc. não consegue misturar código de 32 e de 64 bits no mesmo processo.
Mesmo quando um programa de 32 bits roda no Windows de 64 bits, ele usa uma versão virtualizada do Windows de 32 bits (e é por isso que as DLLs do Windows que são carregadas por programas de 32 bits ficam em c:\windows\syswow32 - wow = Windows On Windows.). Essa versão virtualizada contém algumas “pontes” que permitem um acesso restrito de código de 64 bits do kernel do Windows por código de 32 bits.
- O Windows, o Linux, o MacOSX e o Solaris x86/x64 são assim - ou seja, dá a impressão é que o próprio processador é que limita a “mistura 32 /64 bits no mesmo processo”, senão pelo menos um dos sistemas operacionais faria isso. É possível ter processos de 32 e de 64 bits rodando na mesma máquina, mas não processos com código misturado.
[quote=entanglement]Só explicando por que é que existe um Eclipse 32 bits e um Eclipse 64 bits mas não um NetBeans 32 bits e um NetBeans 64 bits.
O NetBeans é um programa 100% Java e ele usa o Java que estiver instalado, desde que a versão do Java seja suficientemente elevada para ele poder rodar.
(Se não me engano, há um netbeans.exe mas ele serve apenas para iniciar o javaw.exe para a versão correta - não estou com um NetBeans instalado aqui). [/quote]
É por essas e outras que quando vem gente argumentando que a plataforma Java está pronta para jogos por causa do LWJGL eu fico afirmando que não. Quando entra código nativo e JNI, as coisas sempre são mais complicadas, e sempre há a necessidade de esforço extra para garantir que o programa vá rodar em todas as plataformas que a VM roda.
Em resumo, se está rodando fora da plataforma, não use como argumento para defender a plataforma.
Enfim, no caso de poder instalar 2 Versões do JAva (uso linux ubuntu 64bits), como faço isso ?
Tenho apenas o Java 64bits em meu SO.
Dica:
a) Instale as 2 versões do java - 32 e 64 bits - o Windows deixa fazer isso sem problema nenhum
b) Faça o Eclipse (de sei lá quantos bits) usar a versão correta - edite o arquivo eclipse.ini que fica no mesmo diretório do Eclipse.
Exemplo:
-vm
C:/jdk1.7.0/32/bin/javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
...
Você edita (ou cria) uma linha -vm, e na linha seguinte você põe o path do javaw.exe ou java.exe que você vai usar para iniciar o Eclipse. Tome o cuidado de inclinar as barras dos diretórios para o lado certo (ou seja, para o lado Unix).
Como é que isso vai ficar na sua máquina? Na hora de você instalar o Java, ele deve lhe indicar em que diretório devem ficar os arquivos. (Eu tenho o costume, quando tenho 2 instalações do Java, de instalar a de 32 em c:\jdk1.7.0\32\ e a de 64 bits em c:\jdk1.7.0\64\ . )
Se não estiver assim na sua máquina, desinstale o Java e instale de novo no diretório certo - isso deve levar 10 minutos
Como é que fica isso no caso do Linux? Não tenho a menor ideia onde o apt-get instala o Java (não estou com um Ubuntu aqui).
Entretanto, trabalho com um RedHat que tem várias versões do java instaladas, mas não com apt-get, e sim simplesmente descompactando a instalação em um diretório de nossa escolha.
Assim, pelo menos aqui no ubuntu eu mudo o link do Java 32 bits para Java 64bits e vise-versa, porém dessa forma eu só consigo usar 1 Java por vez, não sei como por 2 ao mesmo tempo.
Em vez de você usar o link simbólico (/usr/bin/java), você especifica, no eclipse.ini, que quer usar o java para o qual o link está apontando (acho que você conhece Linux suficientemente para saber para onde o link aponta, certo?)
Por exemplo, se /usr/bin/java aponta para /opt/java/x64/jdk1.7.0_25/bin/java (no caso de 64 bits - estou simplesmente chutando o diretório, não tenho um Ubuntu para olhar e conferir aqui qual é o diretório certo) você põe esse diretório absoluto no eclipse.ini.
Sim amigo, sei sim. Vou procurar fazer isso no eclipse.ini e retorno aqui para dizer se funcionou.
De qualquer forma, não há nada que impeça no Linux de você trabalhar como eu trabalho no RedHat (ou seja, em vez de usar o empacotador, simplesmente descompactar o pacote em um determinado diretório - isso me permite usar as versões do Java desde a versão 5, 6, 7, e a 8 que está no forno.
Bom, fiz as alterações necessários no eclipse.ini mas não funcionou, o eclipse não consegue inicializar:
Eclipse.ini
-vm
/usr/local/jvm/jdk1.6.0_43/bin/java
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120522-1813
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-XX:MaxPermSize=512m
-Xms512m
-Xmx768m
Só para conferir. Seu Eclipse é de 64 bits e seu Java ( /usr/local/jvm/jdk1.6.0_43/bin/java ) é de 64 bits, também?
Ou seu Eclipse é de 32 bits e seu Java ( /usr/local/jvm/jdk1.6.0_43/bin/java ) também?
Use o comando “file” para determinar se o binário é de 32 ou de 64 bits. Exemplo em uma máquina ao qual eu tenho acesso:
[entanglement@valinor ~]$ type java
java is /usr/java/jdk1.6.0_10_x64/bin/java
[entanglement@valinor ~]$ file /usr/java/jdk1.6.0_10_x64/bin/java
/usr/java/jdk1.6.0_10_x64/bin/java: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), for GNU/Linux 2.4.0, not stripped
[entanglement@valinor ~]$ file /usr/java/jdk1.6.0_24_i586/bin/java
/usr/java/jdk1.6.0_24_i586/bin/java: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped
Se você misturar as coisas, vai dar problemas mesmo (não sei se esse é o erro exato que vai ocorrer, já que nessa máquina Linux à qual tenho acesso eu não tenho um Eclipse rodando).