Un fallimento nella creazione di un pacchetto completoUna raccolta di oggetti JD Edwards (BSFN, NER, applicazioni, report) compilati e collegati in DLL per la distribuzione a server e client. di domenica sera è raramente un guasto dell'infrastruttura CNCConfigurable Network Computing. L'architettura JD Edwards che gestisce comunicazione, distribuzione ed esecuzione tra diversi tipi di server.; nella stragrande maggioranza dei casi, si tratta di una svista dello sviluppatore riguardo a specifiche o dipendenze. Affidarsi allo stato generico di "Build Failure" in P9608L'applicazione JD Edwards "Work with Package Build Status", utilizzata per monitorare e gestire le compilazioni dei pacchetti. è un errore che aggiunge ore di inattività non necessarie a una finestra di distribuzione. Per capire come risolvere gli errori di compilazione JDE BSFNJD Edwards Business Function. Moduli di codice C o NER riutilizzabili che incapsulano la logica di business in JD Edwards EnterpriseOne. dopo la creazione di un pacchetto, è necessario bypassare il livello dell'applicazione e interrogare i file .err e .log grezziFile di errore e di log non elaborati generati dal compilatore e dal linker, contenenti messaggi dettagliati sulla compilazione. situati nella cartella di lavoro del serverUn programma o dispositivo che fornisce funzionalità ad altri programmi o dispositivi ("client"). In JDE, si riferisce a Enterprise Server o Deployment Server.. Che si tratti di un #include mancante in un header personalizzato o di una mancata corrispondenza della struttura dati, il compilatore fornisce l'unica verità oggettiva quando il repository JDEIl database centrale (es. Oracle, SQL Server) dove sono archiviate le specifiche degli oggetti, il codice e i metadati di JD Edwards. non è sincronizzato.
Il passaggio dall'architettura a 32 bit a quella a 64 bit in Tools Release 9.2.xUna versione specifica dei componenti software client e server di JD Edwards EnterpriseOne che fornisce lo stack tecnologico sottostante. ha cambiato radicalmente il panorama degli errori, esponendo codice C legacyCodice di programmazione C più vecchio che potrebbe non essere completamente compatibile con le versioni più recenti del compilatore o le architetture (es. 32-bit vs 64-bit). che è rimasto stabile per oltre un decennio ma che ora scatena violazioni fatali di casting e dimensioni dei puntatoriErrori critici causati da conversioni di tipo di dati (casting) o assunzioni errate sulle dimensioni degli indirizzi di memoria, specialmente nella migrazione 32-bit a 64-bit.. Stiamo assistendo a un notevole aumento dei fallimenti di compilazione durante gli upgrade alla 9.2, spesso tra il 15% e il 25%, perché gli sviluppatori ignorano gli avvisi di mathNumericToIntUna funzione API di JD Edwards utilizzata per convertire un tipo di dati MATH_NUMERIC in un intero. Spesso problematica nelle migrazioni a 64 bit. o utilizzano tipi di puntatore incompatibili che i compilatori a 32 bit più vecchi trascuravano. La risoluzione di questi problemi richiede un approccio chirurgico alla directory includeUna directory contenente i file header (.h) che dichiarano funzioni, variabili e strutture dati utilizzate nei programmi C/C++. e una rigorosa verifica della generazione NERGenerazione di Named Event Rule. Il processo di conversione della logica delle Event Rule di JD Edwards in codice sorgente C per la compilazione. prima che il motore del pacchettoIl componente JD Edwards responsabile dell'orchestrazione del processo di compilazione del pacchetto, inclusa la compilazione, il collegamento e la distribuzione degli oggetti. avvii il suo primo collegamento DLLDynamic Link Library. Una libreria contenente codice e dati che possono essere utilizzati da più programmi contemporaneamente. In JDE, le BSFN sono compilate in DLL..
Individuare la fonte della verità nei log di compilazione
Vedere un build di pacchettoIl processo di compilazione e collegamento degli oggetti JD Edwards in componenti eseguibili (DLL) per la distribuzione. fallire in P9608L'applicazione JD Edwards "Work with Package Build Status", utilizzata per monitorare e gestire le compilazioni dei pacchetti. è un rito di passaggio, ma l'icona di stato rossa è funzionalmente inutile per uno sviluppatore. Mostra che un singolo oggetto su diverse migliaia è fallito, ma non fornisce alcun contesto sul fatto che si abbia una virgola mancante in un'istruzione C o un errore nelle variabili d'ambiente del compilatore. L'applicazione Work with Package Build StatusL'applicazione JD Edwards (P9608) utilizzata per monitorare e gestire le compilazioni dei pacchetti. è semplicemente una dashboard di alto livello; la vera prova forense risiede esclusivamente sul file systemIl metodo e la struttura dati che un sistema operativo utilizza per controllare come i dati vengono archiviati e recuperati. della macchina di build.
Per andare oltre il fallimento binario, mappa un'unità alla directory \\buildserver\E920\packages\PACKAGENAME\compile. È qui che il motore di build di EnterpriseOneIl nome completo della suite software ERP di JD Edwards. scarica l'output grezzo dal compilatore Microsoft Visual C++Lo strumento software utilizzato per tradurre il codice sorgente C/C++ in codice macchina sui sistemi Windows. o dalla suite di compilatori LinuxUna raccolta di strumenti software (come GCC) utilizzati per tradurre il codice sorgente C/C++ in codice macchina sui sistemi Linux. pertinente. All'interno di questa cartella, il file stderr.logFile di log Standard Error. Cattura messaggi di errore e output diagnostici da un programma. è il tuo obiettivo principale, poiché cattura i numeri di riga specifici e i codici di errore—come C2065Un codice di errore specifico del compilatore Microsoft Visual C++, che indica un identificatore non dichiarato. per identificatori non dichiarati—che i log di runtime JDE di solito oscurano. Se quel file è vuoto, il stdout.logFile di log Standard Output. Cattura l'output normale da un programma. rivela se il processo di build è fallito durante la fase di pre-processoreLa prima fase della compilazione, in cui vengono gestite le direttive come #include e le macro vengono espanse. o se il sistema semplicemente non è riuscito a localizzare l'eseguibile cl.exeL'eseguibile per il compilatore Microsoft Visual C++..
Un triage efficaceIl processo di prioritizzazione e determinazione della causa di un problema, specifico per la risoluzione dei problemi tecnici. inizia distinguendo un errore di sintassi in fase di compilazioneUn errore rilevato dal compilatore a causa di grammatica o struttura errata nel codice sorgente. da un fallimento di risoluzione dei simboli in fase di collegamentoUn errore rilevato dal linker quando non riesce a trovare la definizione per una funzione o variabile dichiarata ma non definita.. Un errore di compilazione di solito punta a un file .cEstensione di file per il codice sorgente C. o .hEstensione di file per i file header C/C++. specifico dove uno sviluppatore ha dimenticato un typedefUna parola chiave C/C++ usata per creare un alias per un tipo di dati. o ha digitato erroneamente un membro di una struttura dati durante un retrofit 9.2Il processo di adattamento del codice personalizzato esistente per renderlo compatibile con JD Edwards EnterpriseOne Tools Release 9.2.. Al contrario, un errore di collegamento emerge alla fine del log come un "simbolo esterno irrisoltoUn errore del linker che indica che una funzione o variabile referenziata nel codice non può essere trovata in nessuna delle librerie collegate.", segnalando che, sebbene il codice sia sintatticamente corretto, il linkerUn programma che prende uno o più file oggetto generati da un compilatore e li combina in un singolo programma eseguibile o libreria. non riesce a trovare il codice oggettoIl codice macchina prodotto da un compilatore prima di essere collegato in un eseguibile o una libreria. per una BSFNJD Edwards Business Function. Moduli di codice C o NER riutilizzabili che incapsulano la logica di business in JD Edwards EnterpriseOne. chiamata da un'altra DLLDynamic Link Library. Una libreria contenente codice e dati che possono essere utilizzati da più programmi contemporaneamente. In JDE, le BSFN sono compilate in DLL.. In un upgrade tipico che coinvolge 300 oggetti interessati, la maggior parte dei fallimenti di compilazione—spesso oltre i tre quarti—derivano da queste mancate corrispondenze degli headerFile header (.h) contenenti dichiarazioni di funzioni, variabili e strutture dati. piuttosto che da veri e propri difetti logici.
Cerca il codice di uscita 2Un codice di uscita comune che indica un errore fatale durante l'esecuzione di un programma, spesso usato dai compilatori per segnalare una compilazione fallita. nei log, che indica un errore fatale che ha interrotto la compilazione di un file C specifico. Se vedi fallimenti in più BSFN, controlla la sottodirectory includeUna sottodirectory specifica per i file header. all'interno della cartella del pacchetto per assicurarti che i file .hEstensione di file per i file header C/C++. siano stati estratti correttamente dalle specifiche F98711 e F98712Tabelle di sistema JD Edwards che memorizzano informazioni sulle specifiche degli oggetti e le loro dipendenze.. Ho visto sessioni di debug di più ore ridursi a minuti semplicemente verificando che il file JDE.HIl file header principale per JD Edwards EnterpriseOne, contenente dichiarazioni e definizioni fondamentali. nella cartella di compilazione corrisponda effettivamente alla versione nell'ambiente di sviluppoLa configurazione software e hardware utilizzata dagli sviluppatori per scrivere, testare e debuggare il codice.. Se le dimensioni dei file differiscono anche solo di pochi kilobyte, le tue specifiche localiLe definizioni degli oggetti e il codice archiviati sulla workstation locale di uno sviluppatore. e il server di buildLa macchina server designata per eseguire il processo di compilazione e collegamento dei pacchetti JD Edwards. non sono sincronizzati, rendendo necessaria una generazione completa delle specificheIl processo di rigenerazione di tutte le specifiche degli oggetti dal repository centrale, garantendo la coerenza tra gli ambienti. prima del prossimo tentativo di pacchetto.

Risoluzione delle dipendenze di header e file include
Una compilazione locale riuscita su un client FATUn'installazione client di JD Edwards che include l'ambiente di sviluppo completo, consentendo la compilazione e il test locali. crea spesso un falso senso di sicurezza. Quando la compilazione del server fallisce con fatal error C1083: Cannot open include file: 'b550001.h': No such file or directory, il problema raramente è il codice stesso, ma l'accessibilità della sorgente. Se la catena di dipendenze #includeLa sequenza di file header che vengono inclusi da altri file header, formando una catena di dipendenze. è interrotta perché il file .h esiste solo nella cartella locale \include\ dello sviluppatore e non è mai stato archiviato nel repository degli oggetti centraliIl database centrale dove sono archiviate e gestite tutte le specifiche e il codice sorgente degli oggetti JD Edwards., il compilatore lato server fallirà ogni volta. Devi confermare che l'header sia fisicamente presente sul server di distribuzioneIl server responsabile della distribuzione dei pacchetti JD Edwards compilati a workstation client e altri server. e correttamente mappato nella F98611Una tabella di sistema JD Edwards che memorizza informazioni sulle posizioni e le mappature degli oggetti. prima di avviare la prossima compilazione.
Le dipendenze circolariUna situazione in cui due o più moduli o file dipendono l'uno dall'altro in un ciclo, causando problemi di compilazione o collegamento. rappresentano una modalità di fallimento più complessa che spesso sfugge al rilevamento durante le compilazioni BSFN isolate in OWMBusiness Function compilate individualmente all'interno di Object Management Workbench (OWM), lo strumento JD Edwards per la gestione degli oggetti di sviluppo.. Su una workstation localeUn computer utilizzato da un individuo per lavoro, tipicamente la macchina di uno sviluppatore., uno sviluppatore potrebbe compilare B550001 che fa riferimento a B550002, e poiché entrambi gli header esistono localmente da lavori precedenti, il linkerUn programma che prende uno o più file oggetto generati da un compilatore e li combina in un singolo programma eseguibile o libreria. li risolve senza problemi. Sul server EnterpriseIl server principale in un ambiente JD Edwards che esegue la logica di business e i processi fondamentali., la sequenza di compilazione multi-threadUn processo di compilazione in cui più parti del codice vengono compilate contemporaneamente utilizzando più thread, il che può esporre condizioni di gara. potrebbe tentare di compilare B550002 prima che l'header di B550001 sia completamente preparato. Questa condizione di garaUna situazione in cui il risultato di un programma dipende dalla sequenza o dalla tempistica di eventi incontrollabili, come l'esecuzione dei thread. porta a fallimenti intermittenti che appaiono come corruzione delle specificheDanno o inconsistenza nei metadati e nelle definizioni degli oggetti JD Edwards archiviati nel database. ma sono in realtà difetti architetturali nella logica di annidamento degli header.
Per risolvere questi problemi, bypassa i log di alto livelloLog riassuntivi che forniscono una panoramica generale di un processo, in contrasto con i log dettagliati e di basso livello. e ispeziona la cartella Include all'interno della directory di staging del pacchettoUna directory temporanea sul server di build dove i componenti del pacchetto vengono assemblati prima della distribuzione finale. sul server di buildLa macchina server designata per eseguire il processo di compilazione e collegamento dei pacchetti JD Edwards.. Se un header personalizzato manca da questa directory, lo script di build globaleLo script principale che orchestra l'intero processo di compilazione del pacchetto JD Edwards. non è riuscito a estrarlo dalle specifiche F9860Una tabella di sistema JD Edwards che memorizza le specifiche degli oggetti., tipicamente a causa di una mancanza di statoUn'inconsistenza nello stato di un oggetto all'interno del sistema Object Management Workbench (OMW) di JD Edwards. o di un check-in incompletoUna situazione in cui uno sviluppatore non ha completamente commesso tutte le modifiche per un oggetto al repository centrale degli oggetti.. In un ambiente maturo con oltre 10.000 oggetti personalizzati, queste lacune di dipendenza rappresentano circa un quinto di tutti i fallimenti di build dei pacchetti. Verificare che ogni file .h personalizzato sia esplicitamente definito nell'Object LibrarianUn componente di JD Edwards EnterpriseOne che gestisce le definizioni e i metadati degli oggetti. e visibile al processo di build lato server è un passaggio obbligatorio per qualsiasi ambiente 9.2 stabile.
Mancate corrispondenze delle strutture dati e corruzione delle specifiche
Quando una compilazione fallisce con "member of struct has no name" o "conflicting types", il primo controllo è la tabella F98606Una tabella di sistema JD Edwards che memorizza informazioni sui membri delle strutture dati.. Questa tabella tiene traccia del conteggio dei membri e della sequenza degli elementi dati per ogni struttura datiUna collezione di elementi di dati correlati raggruppati sotto un unico nome in JD Edwards. nel sistema. Un fallimento comune si verifica quando uno sviluppatore aggiunge un parametro a una DSTRData Structure. Una collezione di elementi di dati correlati raggruppati sotto un unico nome in JD Edwards. ma non riesce a sincronizzare il typedef in stile CL'uso della parola chiave `typedef` in C per definire un alias per un tipo di dati, spesso usato per le strutture dati.. Se il conteggio F98606 mostra 14 membri ma il tuo file .h ne definisce solo 13, il compilatore genererà un errore C2027 o C2079Codici di errore specifici del compilatore Microsoft Visual C++ relativi a tipi non dichiarati o ridefinizione di membri. durante la fase di collegamento della compilazione del serverLa fase di collegamento del processo di compilazione del pacchetto che avviene sul server, combinando i file oggetto compilati in DLL..
Lo strumento Generate HeaderUna funzione all'interno di Object Management Workbench (OWM) che crea o aggiorna il file header C (.h) per una struttura dati o una business function. in OWMObject Management Workbench. Lo strumento JD Edwards utilizzato dagli sviluppatori per gestire, sviluppare e promuovere gli oggetti. è l'unico modo per garantire che il file .h corrisponda alle specifiche nell'oggetto F9860Una tabella di sistema JD Edwards che memorizza le specifiche degli oggetti.. Nonostante sia un requisito fondamentale, rimane il passaggio più frequentemente saltato nel ciclo di vita dello sviluppo. Gli sviluppatori spesso modificano manualmente il file .h per risparmiare tempo, perdendo i commenti specifici di padding o allineamento che il set di strumenti JDELa collezione di strumenti di sviluppo e utilità forniti da JD Edwards EnterpriseOne. si aspetta. Questo intervento manuale porta a spostamenti di allineamento che potrebbero non causare il crash di una compilazione locale su un client fatUn'installazione client di JD Edwards che include l'ambiente di sviluppo completo, consentendo la compilazione e il test locali., ma causeranno una violazione della memoria su un server enterprise Linux o AIXServer JD Edwards Enterprise che eseguono sistemi operativi Linux o AIX, spesso con requisiti di allineamento della memoria più stringenti rispetto a Windows. dove l'allineamento della memoriaIl processo di organizzazione dei dati in memoria a specifici confini di indirizzo per ottimizzare le prestazioni e prevenire errori. è strettamente applicato.
Le discrepanze in cui una BSFNJD Edwards Business Function. Moduli di codice C o NER riutilizzabili che incapsulano la logica di business in JD Edwards EnterpriseOne. compila perfettamente su una workstation locale ma fallisce durante una compilazione di pacchetto completa o di aggiornamento puntano direttamente a specifiche obsolete negli Oggetti CentraliIl repository centrale in JD Edwards dove sono archiviate tutte le specifiche e il codice degli oggetti.. Quando il motore di build del pacchettoIl componente JD Edwards responsabile dell'orchestrazione del processo di compilazione del pacchetto, inclusa la compilazione, il collegamento e la distribuzione degli oggetti. estrae le specifiche sul server di buildLa macchina server designata per eseguire il processo di compilazione e collegamento dei pacchetti JD Edwards., si basa sulla versione archiviata nel database del server di distribuzioneIl database associato al server di distribuzione, contenente le specifiche degli oggetti utilizzate durante le compilazioni dei pacchetti.. Se uno sviluppatore ha testato localmente ma ha dimenticato di archiviare la DSTRData Structure. Una collezione di elementi di dati correlati raggruppati sotto un unico nome in JD Edwards. insieme alla BSFN, la compilazione del server utilizzerà la vecchia struttura. Ciò si traduce in un errore di mancata corrispondenza dei parametriUn errore che si verifica quando il numero o i tipi di argomenti passati a una funzione non corrispondono alla sua definizione. nel log di compilazione che è impossibile da debuggare guardando solo il codice locale.
Cerca file da 0KB nelle directory sorgente o includeDirectory contenenti file di codice sorgente (.c) e file header (.h). della cartella del pacchetto sul server enterprise. Un file sorgente troncato indica che il processo BusBuildIl processo JD Edwards responsabile della conversione delle specifiche degli oggetti in file di codice sorgente C durante una compilazione di pacchetto. è fallito durante la fase di conversione da specifica a sorgenteIl passaggio nel processo di compilazione del pacchetto JD Edwards in cui le definizioni degli oggetti dal database vengono trasformate in codice sorgente C.. Questo di solito accade quando il repository contiene record orfaniRecord in una tabella di database che fanno riferimento a record inesistenti in un'altra tabella, portando a inconsistenza dei dati. o un blob corrottoUn Binary Large Object (BLOB) in un database che è diventato illeggibile o danneggiato. nella tabella F98743Una tabella di sistema JD Edwards che memorizza le specifiche degli oggetti, potenzialmente inclusi dati BLOB per il codice sorgente.. Se la conversione fallisce, il compilatore trova un file vuoto e termina la compilazione per l'intera DLLDynamic Link Library. Una libreria contenente codice e dati che possono essere utilizzati da più programmi contemporaneamente. In JDE, le BSFN sono compilate in DLL., spesso bloccando decine di funzioni non correlate nel processo.
Navigare nelle insidie della compilazione da 32 a 64 bit
Tools Release 9.2.5Una versione specifica di JD Edwards EnterpriseOne Tools Release, nota per la sua transizione all'architettura a 64 bit. e le versioni successive hanno spostato il runtime JDEL'ambiente di esecuzione per le applicazioni e le business function di JD Edwards EnterpriseOne. su un'architettura a 64 bitUn'architettura informatica in cui processori, indirizzi di memoria e percorsi dati sono progettati per gestire unità di dati a 64 bit., rendendo potenzialmente instabili migliaia di righe di codice C legacyCodice di programmazione C più vecchio che potrebbe non essere completamente compatibile con le versioni più recenti del compilatore o le architetture (es. 32-bit vs 64-bit).. Il punto di fallimento più comune è l'assunto che un puntatoreUna variabile che memorizza l'indirizzo di memoria di un'altra variabile. e un interiNumeri interi utilizzati nella programmazione. condividano la stessa larghezza di bit. Nelle release a 32 bit, entrambi erano di 4 byte. Nell'attuale ambiente a 64 bit, gli indirizzi di memoria occupano 8 byte. Quando gli sviluppatori tentano di effettuare il cast di un puntatore LPVOIDUn tipo di puntatore generico nella programmazione Windows, spesso usato per gli indirizzi di memoria. in un long o int a 32 bitTipi di dati per numeri interi, dove `long` e `int` occupano tipicamente 4 byte (32 bit) sui sistemi a 32 bit., il compilatore genera un avviso C4311Un avviso specifico del compilatore Microsoft Visual C++ che indica un troncamento del puntatore, spesso quando si esegue il cast di un puntatore a 64 bit a un intero a 32 bit. per troncamento del puntatoreLa perdita di informazioni quando un indirizzo di memoria (puntatore) viene convertito in un tipo di dati più piccolo, tipicamente da 64-bit a 32-bit.. Ignorare questo avviso porta alla corruzione della memoriaUn difetto software in cui il contenuto di una posizione di memoria viene alterato involontariamente, portando a comportamenti imprevedibili o crash del programma. perché i bit di ordine superiore dell'indirizzo vengono scartati, causando il riferimento della BSFNJD Edwards Business Function. Moduli di codice C o NER riutilizzabili che incapsulano la logica di business in JD Edwards EnterpriseOne. a posizioni di memoria non valide.
Il refactoringIl processo di ristrutturazione del codice informatico esistente senza modificarne il comportamento esterno. di queste BSFN richiede la sostituzione delle dichiarazioni long legacy con ID o int`ID` è un tipo specifico di JD Edwards, spesso un alias per `int` o `long`. `int` è un tipo intero standard. per le variabili standard, e l'uso di INT_PTRUn tipo di dati garantito per essere sufficientemente grande da contenere un puntatore, indipendentemente dal fatto che il sistema sia a 32 o 64 bit. per qualsiasi variabile destinata a contenere un indirizzo di memoria. Questo è un requisito per il modello di memoria a 64 bitIl modo in cui la memoria viene indirizzata e gestita in un ambiente di calcolo a 64 bit.. Vediamo frequentemente questo problema nella gestione personalizzata della cacheCodice personalizzato sviluppato per gestire la memorizzazione temporanea dei dati (cache) all'interno delle applicazioni JD Edwards, spesso con manipolazione diretta della memoria., dove un puntatore a un bucket di cacheUn segmento o una voce all'interno di una cache dove i dati sono archiviati. è memorizzato in un membro di una struttura dati. Se quel membro è stato definito come un intero di 4 byte nel Data DictionaryIl repository centrale in JD Edwards che definisce tutti gli elementi dati, le strutture dati e le tabelle utilizzate nel sistema., il puntatore di 8 byte verrà troncato e la chiamata jdeCacheFetchUna funzione API di JD Edwards utilizzata per recuperare dati da una cache personalizzata. fallirà con una violazione della memoriaUn errore di accesso alla memoria in cui un programma tenta di accedere a una posizione di memoria non autorizzata, spesso causando un crash..
La gestione della precisione all'interno delle strutture MATH_NUMERICUn tipo di dati proprietario di JD Edwards utilizzato per l'aritmetica decimale precisa, progettato per evitare imprecisioni in virgola mobile. cambia anche in un contesto a 64 bit. Sebbene la struttura stessa rimanga di 36 byte, il modo in cui il compilatore allinea i membri interni su confini di 8 byte può portare a risultati inaspettati se si utilizza la manipolazione diretta della memoria invece delle API JDE standardLe Application Programming Interfaces ufficiali fornite da JD Edwards per interagire con il suo sistema.. È necessario utilizzare MathCopyUna funzione API di JD Edwards utilizzata per copiare il valore di una variabile MATH_NUMERIC in un'altra. e ParseNumericStringUna funzione API di JD Edwards utilizzata per convertire una rappresentazione stringa di un numero in un tipo di dati MATH_NUMERIC. esclusivamente. Tentare di utilizzare funzioni matematiche C standardFunzioni matematiche standard fornite dalla libreria del linguaggio di programmazione C (es. sin, cos, sqrt). effettuando il cast dei membri MATH_NUMERIC a doubleUn tipo di dati in virgola mobile utilizzato per rappresentare numeri reali con alta precisione. spesso comporterà una perdita di precisioneLa riduzione dell'accuratezza di un valore numerico, spesso durante conversioni di tipo di dati o calcoli con numeri in virgola mobile. o errori di arrotondamentoImprecisioni introdotte quando un numero viene approssimato a un certo numero di cifre decimali o significative. che non erano presenti nel runtime a 32 bit.
Infine, controlla le tue dipendenze esterne. Se la tua BSFN si collega a una DLL di terze partiDynamic Link Libraries sviluppate da fornitori o parti esterne, non parte del sistema JD Edwards principale.—comune nelle personalizzazioni di interfaccia di bilancia o di etichettatura merci—quella libreria deve essere conforme a 64 bit. Un file .libEstensione di file per una libreria statica, contenente codice oggetto compilato che viene collegato a un eseguibile in fase di compilazione. a 32 bit farà sì che il linkerUn programma che prende uno o più file oggetto generati da un compilatore e li combina in un singolo programma eseguibile o libreria. generi un errore LNK2001 o LNK1112Codici di errore specifici del linker Microsoft Visual C++ che indicano un simbolo esterno irrisolto o un formato di file oggetto incompatibile. durante la compilazione del pacchetto. Non è possibile collegare queste architettureLa progettazione e l'organizzazione di un sistema informatico, inclusi il suo set di istruzioni, la gestione della memoria e i percorsi dati (es. 32-bit vs 64-bit). all'interno dello stesso processo. Se una versione a 64 bit della libreria di terze parti non è disponibile, devi spostare quella logica su un servizio esternoUn componente software o un'applicazione che funziona indipendentemente dal sistema principale e fornisce funzionalità specifiche, spesso tramite chiamate di rete. e chiamarla tramite un'orchestrazione AISOrchestrazione Application Interface Services. Una funzionalità in JD Edwards EnterpriseOne che consente di creare applicazioni composite e integrare sistemi esterni tramite API REST. o un servizio aziendaleBusiness Service. Un componente riutilizzabile e indipendente dalla piattaforma in JD Edwards EnterpriseOne che espone la logica di business come servizio web. per evitare di bloccare il kernel dell'oggetto di chiamataIl componente runtime principale di una Business Function di JD Edwards che esegue il codice C sottostante..

Diagnosi di simboli esterni irrisolti ed errori del linker
Quando il log di compilazione del pacchetto genera l'errore LNK2019Un codice di errore specifico del linker Microsoft Visual C++ che indica un simbolo esterno irrisolto., il compilatoreUno strumento software che traduce il codice sorgente scritto in un linguaggio di programmazione di alto livello in codice macchina o un codice intermedio. ha terminato il suo compito, ma il linkerUn programma che prende uno o più file oggetto generati da un compilatore e li combina in un singolo programma eseguibile o libreria. è bloccato. Hai un file header valido che dichiara la funzione, eppure il linker non riesce a trovare il codice macchina compilato nella libreria specificata. In un tipico ambiente 9.2, questo si verifica più frequentemente dopo che uno sviluppatore riassegna una Business FunctionUn modulo di codice C o NER riutilizzabile che incapsula la logica di business in JD Edwards EnterpriseOne. da una DLL personalizzataUna Dynamic Link Library creata per Business Function personalizzate di JD Edwards. come CCUSTOMUn nome comune per una DLL personalizzata in JD Edwards EnterpriseOne. a una standard come CALLBSFNUna DLL standard di JD Edwards che contiene molte Business Function fondamentali.. Se le specifiche dell'oggetto padre nella F9860Una tabella di sistema JD Edwards che memorizza le specifiche degli oggetti. puntano ancora alla vecchia DLL, il linker cerca nella libreria sbagliata e fallisce, anche se il codice sorgente stesso è sintatticamente perfetto.
L'integrazione di librerie C++ di terze partiLibrerie C++ sviluppate da fornitori o parti esterne, non parte del sistema JD Edwards principale. per logiche specializzate—come la crittografia avanzataTecniche e algoritmi sofisticati utilizzati per proteggere i dati tramite crittografia. o le API di spedizione proprietarieApplication Programming Interfaces sviluppate e possedute da una specifica azienda per i loro servizi di spedizione.—introduce un livello secondario di rischio per il linkerUn programma che prende uno o più file oggetto generati da un compilatore e li combina in un singolo programma eseguibile o libreria.. Questi file .lib esterni devono essere esplicitamente definiti nei flag del linkerOpzioni o parametri passati al linker per controllarne il comportamento, come specificare librerie aggiuntive da collegare. o nella sezione [JDE_CPP_FLAGS] del JDE.INIUna sezione nel file di configurazione di JD Edwards (JDE.INI) dove possono essere definiti i flag del compilatore C++ e del linker. della macchina di build. Se manca un riferimento a una libreria come libcurl.libUna libreria comune utilizzata per i trasferimenti URL lato client, spesso collegata ad applicazioni C/C++. o a un wrapper personalizzatoUno strato di codice personalizzato che incapsula una libreria o API esistente per fornire un'interfaccia semplificata o adattata., la compilazione terminerà durante la fase di collegamento finale della DLL. Ho visto ritardi di due giorni o più nei go-live perché un server di buildLa macchina server designata per eseguire il processo di compilazione e collegamento dei pacchetti JD Edwards. è stato sostituito e le configurazioni manuali del percorso del linker nel JDE.INIIl file di configurazione principale per i componenti client e server di JD Edwards EnterpriseOne. non sono state migrate dal vecchio server di distribuzioneIl server responsabile della distribuzione dei pacchetti JD Edwards compilati a workstation client e altri server..
Lo scenario più pericoloso è un fallimento silenzioso del collegamento in cui il report UBEUniversal Batch Engine report. Un processo batch o report in JD Edwards EnterpriseOne. mostra un "Warning" ma il pacchetto viene completato. Devi verificare la cartella 'bin' del pacchettoLa directory all'interno di un pacchetto JD Edwards dove sono archiviati i file binari compilati (DLL, eseguibili). sul server di distribuzioneIl server responsabile della distribuzione dei pacchetti JD Edwards compilati a workstation client e altri server. per confermare che il timestamp della .dllLa data e l'ora registrate quando un file Dynamic Link Library è stato creato o modificato l'ultima volta. corrisponda all'ora di inizio della compilazione. Se la .dll è mancante o mostra una data vecchia, il passaggio di collegamento è fallito. Per un repository enterpriseIl database centrale dove sono archiviate e gestite tutte le specifiche e il codice degli oggetti JD Edwards a livello aziendale. di 10.000 oggetti, un singolo simbolo irrisoltoUn errore durante il collegamento in cui una funzione o variabile è referenziata ma la sua definizione non può essere trovata. in una DLL coreUna Dynamic Link Library fondamentale in JD Edwards che contiene business function essenziali. può impedire a decine di BSFN a valleBusiness Function che dipendono da e chiamano altre Business Function. di caricarsi a runtimeLa fase durante la quale un programma informatico è in esecuzione., portando al temuto errore "Business Function Load FailedUn messaggio di errore comune in JD Edwards che indica che una Business Function non è stata caricata in memoria per l'esecuzione." nel jdedebug.logIl file di log di debug principale per JD Edwards EnterpriseOne, contenente informazioni dettagliate sul runtime e messaggi di errore.. Verifica la tabella F9862Una tabella di sistema JD Edwards che memorizza informazioni sulle mappature degli oggetti alle DLL. per assicurarti che l'oggetto sia mappato alla DLL padre corretta prima di rieseguire la compilazione.
Fallimenti di generazione NER e sincronizzazione del codice sorgente
Un fallimento nella compilazione di un pacchetto per una Named Event Rule (NER)Un tipo di Business Function in JD Edwards EnterpriseOne dove la logica di business è definita graficamente e poi generata in codice C. spesso deriva da un'interruzione nella fase di pre-compilazioneLa fase iniziale della compilazione in cui il codice sorgente viene elaborato prima del passaggio di compilazione principale, spesso coinvolgendo l'espansione di macro e l'inclusione di header. in cui le Event RulesIl linguaggio di scripting proprietario e la logica utilizzati in JD Edwards EnterpriseOne per definire processi di business e comportamento delle applicazioni. vengono tradotte in codice sorgente CCodice leggibile dall'uomo scritto nel linguaggio di programmazione C.. Se ispezioni le directory source e include della tua cartella di compilazione del pacchetto e trovi N550001.cUna convenzione di denominazione comune per il file sorgente C generato da una Named Event Rule (NER) personalizzata in JD Edwards. o il suo file header corrispondente mancante, il processo di compilazione non ha mai raggiunto il compilatoreUno strumento software che traduce il codice sorgente scritto in un linguaggio di programmazione di alto livello in codice macchina o un codice intermedio.. Il passaggio di generazione è un prerequisito; l'agente di build deve eseguire con successo il generatoreIl componente JD Edwards responsabile della conversione della logica delle Event Rules in codice sorgente C. per trasformare la logica ERLogica delle Event Rule. Le regole e i processi di business definiti utilizzando il linguaggio delle Event Rule in JD Edwards. in un formato che il compilatore CUno strumento software che traduce il codice sorgente C in codice macchina. possa digerire.
Le discrepanze tra il validatore della workstation localeIl componente sulla workstation locale di uno sviluppatore che controlla la sintassi e la coerenza delle Event Rules. e il generatore lato serverIl componente sul server JD Edwards che converte le Event Rules in codice C durante una compilazione di pacchetto. rappresentano una parte significativa della maggior parte di questi fallimenti. Potresti vedere uno stato di "Successo" quando salvi la NER nello strumento Event Rules DesignLo strumento grafico all'interno di JD Edwards EnterpriseOne utilizzato per creare e modificare le Event Rules., eppure la compilazione lato server fallisce a causa di un record orfano nella tabella F9861Una tabella di sistema JD Edwards che memorizza informazioni sulle specifiche degli oggetti e il loro stato. o di una mancata corrispondenza nello stato del progetto OMWLo stato di un progetto di sviluppo all'interno di Object Management Workbench (OMW), che controlla la promozione e la distribuzione degli oggetti. che impedisce al generatore di accedere alle ultime specifiche. Per mitigare ciò, esegui sempre un "GetUn'azione in Object Management Workbench (OWM) per recuperare l'ultima versione di un oggetto dal repository centrale alla workstation locale." sulla NER e sulla sua struttura dati associata in un ambiente pulito prima della promozioneIl processo di spostamento degli oggetti JD Edwards attraverso diversi ambienti di sviluppo (es. da sviluppo a test a produzione). per assicurarti che il repository degli oggetti centraliIl database centrale dove sono archiviate e gestite tutte le specifiche e il codice sorgente degli oggetti JD Edwards. sia completamente popolato.
Questa guida ha affrontato i principali ostacoli tecnici nella risoluzione degli errori di compilazione BSFN durante la distribuzione dei pacchetti. Per sfide architetturali più profonde o colli di bottiglia di prestazioni persistenti nel tuo codice C personalizzato, consulta i nostri successivi approfondimenti tecnici sulla gestione della cache JDEIl processo di gestione della memorizzazione temporanea dei dati (cache) all'interno di JD Edwards EnterpriseOne per migliorare le prestazioni. e l'ottimizzazione delle BSFNIl processo di miglioramento delle prestazioni e dell'efficienza delle Business Function di JD Edwards..