2015-05-26 20 views
5

Ho qualche codice che funziona sotto Railo, ma sto cercando di ottenere questo app particolare lavorando su CF10 e CF11Usa classe java in ColdFusion11 - Il tipo di oggetto Java è sconosciuto per la funzione CreateObject

Si tratta di un'applicazione cfWheels, e ho un file BCrypt.class nella directory /miscellaneous/.

Nel mio file /events/onapplicationstart.cfm, ho:

application.bCrypt = CreateObject("java", "BCrypt", "/miscellaneous/"); 

Questo funziona in Railo; ma in CF11 ottengo

The java object type is unknown for the CreateObject function. 

Verify the type of your object when creating it and try again. 
Valid Types are : component | java | webservice | dotnet | com | corba | .NET 


The error occurred in /Volumes/Documents/blah/public/events/onapplicationstart.cfm: line 8 
Called from /Volumes/Documents/blah/public/wheels/global/cfml.cfm: line 111 
Called from /Volumes/Documents/blah/public/wheels/events/onapplicationstart.cfm: line 388 
6 : 
7 :  // BCrypt library 
8 :  application.bCrypt = CreateObject("java", "BCrypt", "/miscellaneous/"); 
9 : 
10 : // Application Specific settings 

Suppongo che sia solo una cosa della sintassi? Posso chiamare un file .class in questo modo su CF10/11?

+2

'createObject' di Adobe CF ha solo due argomenti. Il tipo e la classe. Il file di classe deve essere inserito nella cartella 'cfusion \ wwwroot \ WEB-INF \ classes ' – haxtbh

+0

Ah grazie, necessario: this.javaSettings = { LoadPaths = ["/miscellaneo "] }; e quindi utilizzare solo CreateObject ("java", "BCrypt"); – Neokoenig

+0

Riapertura perché l'affermazione che questa domanda era duplicata di un'altra non era accurata. Era una situazione * simile *, ma non uguale. –

risposta

5

Ah grazie a tutti. Come haxtbh ha detto in the comments, il problema era

L'oggetto di creazione di Adobe CF ha solo due argomenti. Il tipo e la classe .

quindi avevo bisogno di mettere:

this.javaSettings = { LoadPaths = ["/miscellaneous"] };

in /config/app.cfm

e quindi utilizzare

CreateObject("java", "BCrypt");

in/eventi/onapplicationstart. cfm

+3

Per impostazione predefinita il server ColdFusion memorizza nella cache il file di classe al primo caricamento, puoi scegliere di ricaricare nuova copia ogni volta usando 'reloadOnChange =" true "' come uno dei parametri. Durante lo sviluppo è davvero utile. – Anurag

+0

Grazie, buon consiglio. – Neokoenig