Error while writing CPrincipal

Olá, amigos! Sou iniciante em Java. Tive algumas aulas há tempos e resolvi voltar a estudar. Criei este pequeno programa:
[color=red]import javax.swing.JFrame;
public class CPrincipal {
public static void main(String args[]) {
JFrame janela = new JFrame();
janela.setSize(500,300);
janela.setVisible(true);
}

}[/color]

Fui compilar através do “javac” pelo CMD e apareceu este erro:

Pasta de C:\Program Files\Java

22/08/2013 21:06 .
22/08/2013 21:06 …
22/08/2013 21:20 235 CPrincipal.java
22/08/2013 20:34 jdk1.7.0_25
22/08/2013 20:34 jre7
1 arquivo(s) 235 bytes
4 pasta(s) 66.773.745.664 bytes disponíveis

C:\Program Files\Java>javac CPrincipal.java
CPrincipal.java:3: error: error while writing CPrincipal: CPrincipal.class (Aces
so negado)
public class CPrincipal {
^
1 error

C:\Program Files\Java>

Pesquisei no forum e fiz tudo que estava ao meu alcance, no entanto continua o mesmo erro.
Por favor, podem me ajudar?

o .java que contem a class CPrincipal tbm se chama CPrincipal???

Sim, amigo! Com as mesmas letras e tamanho. Logo acima existe uma cópia fiel (em vermelho) do texto digitado no arquivo .java.

Por acaso você salvou o seu código fonte diretamente na pasta do Java?
Pergunto pois parece que você não tem permissão do SO para salvar o arquivo.

Opa…

Mas ‘C:\Program Files\Java’ é o diretório onde o seu java tá instalado? Em caso positivo… sem chance… coloque seu CPrincipal.java em outro diretório. Ex: ‘C:\java’ e compile de novo. Existe o safe (seguraça) que o java não permite alterar (hackear) o próprio path onde ele está.
Pois vc tá recebendo acesso negado… porque o java não pode/quer criar o .class dentro desta pasta!

1 curtida

OK! Entendi! Vou colocar o diretório Java em C:\ e compilar tudo novamente. Tenho autorização sim! Sou o proprietário! Posso simplesmente recortar a pasta Java de onde está e colar em C:\ e alterar os endereços “PATH” e funciona?

Não não… você num entendeu…
Autorização do OS… tipo… o java não pode alterar a past ‘C:\windows\system32’ por o Windows não deixa. No seu caso… o próprio java não deixa deixa vc acessar a pasta de instalação do JAVA para evitar que o seu java seja hackeado…

É permissão de acesso que é concedida pelo OS… tem nada haver vc ser proprietário, adm da maquina ou não!

1 curtida

Seria interessante reinstalar o Java e escolher a opção de colocar a pasta do mesmo em C:?

Calma só disse o que apareceu, no caso o Windows bloqueia a escrita nas pastas de programas(por isso o bloqueio), podia executar o CMD como o administrador e rodar (mas isso é gambiarra).

Configure as variáveis de ambiente(caso não tenha configurado veja aqui) e salve seu fonte na pasta que desejar e você poderá compilar/executar usando os comandos da JDK facilmente.

Rafael_Leal algumas pessoas dizem ser errado instalar o JDK no diretório padrão (C:/Program Files/Java/) devido ao espaço em branco, você saberia dizer se isso realmente gera algum problema(e qual seria)?

Seu java tá OK…
Vc não não pode/deve criar progrmas dentro da que contem programas…
Crie uma pasta que vc vai por seus projetos… tipo… C:\PROJETOS_JAVA ou qualquer outra coisa… mas nunca dentro das pasta C:\windows ou C:\program files, pois são pastas que seu Windows gerencia… e pode ter pemissão de acesso negado devido a seguraça o próiprio windows.

[quote=Erick09]OK! Entendi! Vou colocar o diretório Java em C:\ e compilar tudo novamente. Tenho autorização sim! Sou o proprietário! Posso simplesmente recortar a pasta
Rafael_Leal algumas pessoas dizem ser errado instalar o JDK no diretório padrão (C:/Program Files/Java/) devido ao espaço em branco, você saberia dizer se isso realmente gera algum problema(e qual seria)?[/quote]

Somente se você configurar de PATH errado… pois o java vai no valor que tá no seu java_path… e o SO que fala para o java o caminho no path. No caso do windows ele fala para java que o path é “C:/Program Files/Java/” e automaticamente o windows converte o Program Files para ‘Program Files’… que sairia no fim C:/‘Program Files’/Java/

Isso é coisa de java 1.4 ou inferior e winxp sp1… no sp2 a MS já corrigiu

OK, amigo! Obrigado pela ajuda. No meu caso estou utilizando o Windows 7 Professional. Vou fazer o seguinte. Logo mais à noite terei acesso ao meu PC e farei o combinado. Aproveito para postar, também as linhas do CMD referente ao PATH.

Bem fiz o seguinte:

  1. Coloquei a pasta Java no C:\ ;
  2. Compilei através do javac o arquivo CPrincipal ;
  3. Sucesso! Gerou o arquivo binário CPrincipal.class

No entanto, quando digitei C:\Java>java CPrincipal apareceu o seuginte erro:

C:\Java>java CPrincipal
Error: could not open `C:\Program Files\Java\jre7\lib\i386\jvm.cfg’

[quote=angelmix]Bem fiz o seguinte:

  1. Coloquei a pasta Java no C:\ ;
  2. Compilei através do javac o arquivo CPrincipal ;
  3. Sucesso! Gerou o arquivo binário CPrincipal.class

No entanto, quando digitei C:\Java>java CPrincipal apareceu o seuginte erro:

C:\Java>java CPrincipal
Error: could not open `C:\Program Files\Java\jre7\lib\i386\jvm.cfg’

[/quote]

Vê se ajuda (Variáveis de Ambiente):

CLASSPATH => .;JAVA_HOME

JAVA_HOME => C:\Java\jdk1.7.0_25

PATH => C:\Java\jdk1.7.0_25\bin

[quote=angelmix]Bem fiz o seguinte:

  1. Coloquei a pasta Java no C:\ ;
  2. Compilei através do javac o arquivo CPrincipal ;
  3. Sucesso! Gerou o arquivo binário CPrincipal.class

No entanto, quando digitei C:\Java>java CPrincipal apareceu o seuginte erro:

C:\Java>java CPrincipal
Error: could not open `C:\Program Files\Java\jre7\lib\i386\jvm.cfg’

[/quote]

  1. que pasta Java…? onde seu Java está instalado…? se for… vc NÃO DEVIA ter feito isso. Deixe seu Java onde ele estava instalado… os seu programa/projeto que não DEVE está na pasta JAVA. Ele que deveria ter sido movido de C:\Program Files\Java
    Pois agora parace que seu cmd não acha onde tá o arquivo de configuração do seu já em `C:\Program Files\Java\jre7\lib\i386\jvm.cfg’… e para seu Windows o Java está instalado lá em [b]C:\Program Files\Java[/b]…

E a sua variavel JAVA_HOME parece que está apotanto para JRE7 e não para SDK… dentro da pasta JAVA em ‘arquivo de programas’ tem a pasta JRE7???

Poxa…que lenha que eu fiz! Vou tentar corrigir e postar novamente. Se vê que não consigo corrigir, instalo novamente.

Pronto! Corrigi a lenha! Ficou agora assim:

  1. Em C:\ coloquei os arquivos CPrincipal.java e o CPrincipal.class ;

  2. Em C:\Arquivo de Programas\ coloquei de volta a pasta Java ;

  3. As variáveis de ambiente ficaram assim:

CLASSPATH -> .; JAVA_HOME

JAVA_HOME => C:\Program Files\Java\jdk1.7.0_25

PATH => C:\Program Files\Java\jdk1.7.0_25\bin

  1. Abri o cmd e digitei no prompt C::

java CPrincipal

O resultado foi abrir uma janela normal com o ícone do java no lado esquerdo superior.

SUCESSO!!!

Obrigado pela atenção que me deram e desculpe as falhas devido ao meu desconhecimento.

Agora tenho algumas dúvidas:

A) Poderia explicar um pouco mais o “porquê” do arquivo binário java.class ter que ficar em C:?

B) Qual a função das variáveis de ambiente?

CLASSPATH

JAVA_HOME

PATH

C) Toda vez que instalamos o JDK a pasta Java é colocada em C:\Arquivo de Programas\ por default. Se na instalação modificarmos o endereço para a pasta se localizar em “C” isso fará alguma diferença no funcionamento do todo?

D) Se eu utilizasse a IDE Eclipse para “rodar” o meu programa aconteceria todos esses problemas?

E) Bem o CMD é um interpretador do conteúdo digitado. Ele informa ao computador através de uma determinada linguagem o que ele deve fazer. A pasta Java, traz dentro de si a linguagem Java e o CMD através dos endereços das variáveis de ambiente, vai buscar esta linguagem e o CMD vai interpretá-la e converter essa interpretação para a linguagem de entendimento do computador, para o computador proceder às ordens dos comandos inseridos digitalmente.

E1. Está correto esse meu entendimento?

E2. Se estiver, qual a linguagem que o computador utiliza para processar as solicitações realizadas pelo CMD?

Cara, a janela é linda! Nem acredito que é o meu primeiro programa em Java!(Rsss…)
Poxa! Mais, uma vez, obrigado pela ajuda!

[quote=angelmix]Pronto! Corrigi a lenha! Ficou agora assim:

  1. Em C:\ coloquei os arquivos CPrincipal.java e o CPrincipal.class ;

  2. Em C:\Arquivo de Programas\ coloquei de volta a pasta Java ;

  3. As variáveis de ambiente ficaram assim:

CLASSPATH -> .; JAVA_HOME

JAVA_HOME => C:\Program Files\Java\jdk1.7.0_25

PATH => C:\Program Files\Java\jdk1.7.0_25\bin

  1. Abri o cmd e digitei no prompt C::

java CPrincipal

O resultado foi abrir uma janela normal com o ícone do java no lado esquerdo superior.

SUCESSO!!!

Obrigado pela atenção que me deram e desculpe as falhas devido ao meu desconhecimento.

[/quote]

Bom demais cara!!!
É isso ai… agora nunca mais você erra nisso!

Sem comando para especificar o destino… class é gerado onde está o arquivo .java é compilado!

Cada PC pode ter instalado o java e outros programas diretórios diferente do padrão. Dai por exemplo, invez do Eclipse ir em “C:\program files\java” para achar o java… ele pergunta pro Windows o valor da variável JAVA_HOME para saber onde está o Java.

JAVA_HOME = Onde o java está instalado…
PATH = São os serviços que o Windows liga como serviços basicos para funcionar…
CLASSPATH = É onde está suas classes que podem ser usada em seus programas… (se tiver vazio o copilador só vai compilar com as classes padrão que o java oferece) Se você estiver usando o Eclipse, ele configura o classpath somente pra o projeto que você está programando, ou seja, cada projeto tem o seu. Configurando no Windows… todos o projeto vão tem o mesmo classpath…

Não… desde que você configure o JAVA_HOME e PATH para o diretório onde você instalou o java.

Não… o eclipse configura essas variaveis por projeto e é bem mais fácil… pois se você apontar os diretórios errado ele reclama contigo.

Mais ou menos… o CMD não interpleta nada…
Quando você digita java CPrincipal… O comando vai nas variáveis e verifica se existe um serviço chamado JAVA… o serviço só existirá se a variável PATH conter o caminho do java até sua pasta bin… O CPrincipal o java que vai interpretar…

Isso não é duvida de JAVA, mas… o CMD trabalha com instruções somente… ele nunca faz nada… só instrui os outros programas fazer algo…
java CPrincipal -> Manda o java executar CPrincipal
format c: /q /u -> manda o format executar a ação em c: e que seja do modo rápido /q e que ignore qualquer alerta /u

Ou seja… ele manda outros programa fazer ações de acordo com parametros passados.

Agora… tá na hora de você começar usar o Eclipse ou NetBeans para programar…

OK! Entendido!
Instalei o Eclipse.
Você pode me indicar algum endereço na internet onde possa visualizar como utilizar o Eclipse?
Assim passo a utilizar o mesmo no meu estudo.