sexta-feira, 15 de julho de 2011

Please specify a context-root compiler argument

Olá, hoje num projeto flex aqui aconteceu o seguinte erro:

The services configuration includes a channel-definition 'my-http' that has an endpoint with a context.root token but a context root has not been defined. Please specify a context-root compiler argument.

Para resolver cliquei com o botão direito no projeto, properties, flex compiler e em "additional compiler arguments" adicionei o seguinte no final da linha:

-context-root nomeDoContexto

Pronto! Problema resolvido!

Abraços,
Adriano Schmidt

configuration variable 'compiler.library-path' value contains unknown token 'M2_REPO'

Olá, ao baixar projetos flex com maven e rodar o mvn flex:eclipse estavam acontecendo esses erros no eclipse:

configuration variable 'compiler.library-path' value contains unknown token 'M2_REPO'
configuration variable 'compiler.external-library-path' value contains unknown token 'M2_REPO'

O problema era que em algum lugar não estava setada a variável M2_REPO. Essa variável aponta para o repositório do maven na sua máquina. Por exemplo C:\Users\adriano.schmidt\.m2\repository

Aqui eu tinha isso nas minhas variáveis de ambiente e também nas minhas classpath variables do eclipse. Ainda não sei onde mais tenho que configurar isso.

Para resolver eu cliquei com o botão direito no projeto, fui em properties, escolhi "Flex Build Path" ou "Flex library Build Path" depende do seu projeto.. e na aba "library path" alterei todas as dependências trocando o ${M2_REPO} por C:/Users/adriano.schmidt/.m2/repository (barras para a direita)

Você também pode fazer search/replace no arquivo .actionScriptProperties.

Aqui isso aconteceu num projeto flex.. caso seja com java que ocorra esse erro para você a solução será semelhante.

Abraaaços!
Adriano Schmidt

quinta-feira, 7 de julho de 2011

Path must include project and resource name

Olá, ao criar um projeto flex com maven (http://maven.servebox.org/sites/maven-flex-plugin/flex-plugin/) aconteceu o erro abaixo no eclipse após executar o comando mvn flex:eclipse e atualizar o projeto.

An error has occurred. See error log for more details.
Path must include project and resource name: /nome-do-projeto


O problema era que no meu pom.xml eu estava utilizando a tag sourceDirectory da seguinte forma:

<sourceDirectory>.</sourceDirectory>

Coloquei o ponto para definir o diretório atual (raiz) como o diretório onde estavam os fontes, porém, isso causava o erro acima. Para resolver arranquei fora essa tag do meu pom, assim a pasta src/main/flex foi assumida por default como diretório de fontes, a única coisa que tive que fazer foi criar as pastas src/main/flex e migrar meus fontes da raiz para esse diretório.

Vaaaleu
Adriano Schmidt

quarta-feira, 29 de junho de 2011

No Dialect mapping for JDBC type: 2004

Olá..

Um cliente aqui usa o banco de dados Informix.. ao testar nosso projeto nesse banco tive o seguinte erro:

13:57:15,040 INFO [DatabaseMetadata] table not found: MY_TABLE
13:57:15,041 ERROR [SchemaUpdate] could not complete schema update: org.hibernate.MappingException: No Dialect mapping for JDBC type: 2004
at org.hibernate.dialect.TypeNames.get(TypeNames.java:79) [:3.5.5-Final]
at org.hibernate.dialect.TypeNames.get(TypeNames.java:104) [:3.5.5-Final]
at org.hibernate.dialect.Dialect.getTypeName(Dialect.java:347) [:3.5.5-Final]

O problema era que temos uma tabela que guarda uma imagem em uma de suas colunas e usamos @Lob no seu mapeamento. O Dialeto do Informix não aceitou o @Lob.

Para resolver extendi o Dialeto do Informix e adicionei as seguinte linhas no construtor:

registerColumnType(Types.BLOB, "blob");
registerColumnType(Types.CLOB, "clob");

Mais detalhes em http://www.snailshell.de/blog/archives/2007/06/entry_108.html

Alterei o persistence.xml para usar o dialeto que criei e o projeto funcionou perfeitamente.

Outras fontes:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2646
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2523

Vaaleu
Adriano Schmidt

quinta-feira, 16 de junho de 2011

java.lang.String cannot be cast to org.servebox.flex.mojo.FlexLicense

Olá, aconteceu comigo agora o erro:

java.lang.ClassCastException: java.lang.String cannot be cast to org.servebox.flex.mojo.FlexLicense
at org.servebox.flex.mojo.base.AbstractFlexMakeMojo.handleCompilationOptions(AbstractFlexMakeMojo.java:1142)
at org.servebox.flex.mojo.base.AbstractFlexMakeMojo.handleConfiguration(AbstractFlexMakeMojo.java:990)
at org.servebox.flex.mojo.base.AbstractFlexMakeMojo.invokeCompiler(AbstractFlexMakeMojo.java:923)
at org.servebox.flex.mojo.MakeSWFMojo.invokeCompiler(MakeSWFMojo.java:105)
at org.servebox.flex.mojo.base.AbstractFlexMakeMojo.compile(AbstractFlexMakeMojo.java:858)
at org.servebox.flex.mojo.MakeSWFMojo.compile(MakeSWFMojo.java:113)

O erro aconteceu pois eu usei a tag abaixo:
<licenses>
<flexbuilder3>1111-1111-1111-1111-1111-1111</flexbuilder3>
</licenses>

Mas deveria ter usado da seguinte forma:
<flex3LicenceKey>1111-1111-1111-1111-1111-1111</flex3LicenceKey>

Ambas as formas estavam dentro de <plugin> e dentro de <configuration>

Vaaleu!

segunda-feira, 21 de março de 2011

Unable to find XML mapping file in classpath

Ao usar a tag <mapping-file> no meu persistence.xml tive o seguinte erro quando iniciei o JBoss:

Unable to find XML mapping file in classpath: br.com.localhost8080.Teste2.hbm.xml

O erro era que a separação dos pacotes deve ser feita com barra e não ponto:

Assim:
<mapping-file>br/com/localhost8080/Teste2.hbm.xml</mapping-file>
Não assim:
<mapping-file>br.com.localhost8080.Teste2.hbm.xml</mapping-file>

Vaaleu!
Adriano Schmidt

cvc-complex-type.2.4.a: Invalid content was found starting with element 'mapping-file'

Olá,

Ao utilizar a tag <mapping-file> no persistence.xml eu tive o seguinte erro:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'mapping-file'. One of '{"http://
java.sun.com/xml/ns/persistence":class, "http://java.sun.com/xml/ns/persistence":exclude-unlisted-classes,
"http://java.sun.com/xml/ns/persistence":properties}' is expected.


O problema é que no meu persistence.xml eu tinha uma tag <class> antes da tag <mapping-file>. Para resolver só joguei a tag class pra baixo da tag <mapping-file>. Assim:

<mapping-file>br/com/localhost8080/Teste2.hbm.xml</mapping-file>
<class>br.com.localhost8080.Teste1</class>

Caso você use a tag <jar-file> ela também deve estar depois da tag <mapping-file>

Vaaleu!

sexta-feira, 18 de março de 2011

JBoss 6 Final eclipse

Olá, utilizando o JBoss 6 M5 no eclipse tudo ocorria bem, quando fui migrar para o JBoss 6 Final tive o seguinte erro:

Error installing to Instantiated: name=PostEjbJarMetadataDeployer state=Described: java.lang.NoSuchMethodError: javax.annotation.Resource.lookup()Ljava/lang/String;

Para resolver bastou adicionar nos VM arguments o seguinte:

-Djava.endorsed.dirs="C:\jboss-6.0.0-Final\lib\endorsed"

Troque C:\jboss-6.0.0-Final pela pasta do seu JBoss.

Fontes:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=250643
http://community.jboss.org/message/587813?tstart=60

Vaaleu!

quinta-feira, 17 de março de 2011

p:tabView volta primeira aba

Olá,

O TabView do primefaces volta para a primeira aba em algumas situacoes (quando ele está dentro de um <a4j:outputPanel ajaxRendered="true"> e dentro de um tab tem um rich:datatable e um botão é pressionado no datascroller (nossa, é difícil, mas aconteceu comigo)).

Para resolver isso, simplesmente tire o tabView do outputPanel.

Caso isso não possa ser feito, na troca de aba deve ser setado o 'activeIndex' do tabView. Da seguinte forma:

No tabView deve ser adicionado o tabChangeListener e o activeIndex. E as tabs devem ter seu id setado:

<p:tabView tabChangeListener="#{myBean.onTabChange}" activeIndex="#{myBean.currentTab}">
<p:tab title="primeria aba" id="tab0">
</tab>

<p:tab title="segunda aba" id="tab1">
</tab>

<p:tab title="terceira aba" id="tab2">
</tab>
</p:tabView>


No Bean adicione isso:

private int currentTab = 0;

public int getCurrentTab() {
return currentTab;
}

public void setCurrentTab(int currentTab) {
this.currentTab = currentTab;
}

public void onTabChange(org.primefaces.event.TabChangeEvent event) {
String id = event.getTab().getId();
if (id.equals("tab0")) {
this.setCurrentTab(0);
} else if (id.equals("tab1")) {
this.setCurrentTab(1);
} else if (id.equals("tab2")) {
this.setCurrentTab(2);
}
}


Acredito que isso não funciona no primefaces 2.1.. aqui no 2.2.1 funcionou..

É isso, vaaleu. Abraço.

sexta-feira, 11 de março de 2011

ORA-01452: cannot CREATE UNIQUE INDEX

Olá,

Fui criar um índice único no oracle:

CREATE UNIQUE INDEX nome_do_indice ON nome_da_tabela (coluna1, coluna2, coluna3);

e aconteceu o seguinte erro:

Error: ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found

Isso aconteceu pois na tabela que fui inserir o índice já haviam registros que violavam esse índice, por isso não permitiu criar..

Para resolver removi os registros que violavam o índice e deu tudo certo.

Mais detalhes sobre o erro: http://ora-01452.ora-code.com/
Mais detalhes sobre índices no oracle: http://www.techonthenet.com/oracle/indexes.php

Vaaleu!
Adriano Schmidt.