La mia applicazione è basata su Java EE.Come cercare una stringa in file JAR
Ho circa 50 giare in questa applicazione.
È possibile cercare una determinata parola chiave (in realtà voglio cercare una parola chiave BEGIN REQUEST
)?
La mia applicazione è basata su Java EE.Come cercare una stringa in file JAR
Ho circa 50 giare in questa applicazione.
È possibile cercare una determinata parola chiave (in realtà voglio cercare una parola chiave BEGIN REQUEST
)?
È possibile utilizzare zipgrep su linux,
zipgrep "BEGIN REQUEST" file.jar
Se dovete trovare la stessa cosa in numero di vasi, fare
find libdir -name "*.jar" -exec zipgrep "BEGIN REQUEST" '{}' \;
dove libdir è una directory che contiene tutti i vasi. Il comando ricercherà ricorsivamente anche le sottodirectory.
per Windows, è possibile scaricare Cygwin e installarlo zipgrep sotto http://www.cygwin.com/
Modifica 1
Per visualizzare il nome del file che l'espressione è stata trovata si poteva fare,
find libdir | xargs -I{} sh -c 'echo searhing in "{}"; zipgrep "BEGIN REQUEST" {}'
Il comando seguente mostra i risultati con il nome del file e il nome del file jar.
Per trovare la stringa nell'elenco di file jar.
find <%PATH of the Folder where you need to search%> -name "*.jar" -print -exec zipgrep "jar$|<%STRING THAT YOU NEED TO FIND>" '{}' \;
Per trovare il nome della classe nell'elenco del file jar.
find . -name "*.jar" -print -exec jar tvf {} \; |grep -E "jar$|<%CLASS NAME THAT YOU NEED TO FIND>\.class"
Ricerca all'interno di un barattolo o trovare il nome della classe che contiene un testo particolare è molto facile con WinRar ricerca. È efficiente e ha sempre funzionato per me almeno.
è sufficiente aprire qualsiasi jar in WinRar, fare clic su ".." fino a raggiungere la cartella superiore da cui si desidera avviare la ricerca (comprese le sottocartelle).
Assicuratevi di controllare le seguenti opzioni:
1.) forniscono '*' in 'i nomi dei file per trovare' campi,
2.) find selezionare le caselle di controllo' 'tipi' archivio in sottocartelle ',' trova nei file ',' trova negli archivi '.
Attenzione: Questa non è una risposta precisa, è solo un rapido approccio euristico. Se hai bisogno di trovare qualcosa come il nome di una classe (ad esempio, quale jar ha classe Foo?) O forse un nome di metodo, allora questo potrebbe funzionare.
grep --text 'your string' your.jar
Questo cercherà il file jar come se fosse un testo. Questo è più veloce perché non espande l'archivio, ma è anche per questo che è meno accurato.Se hai bisogno di essere esaustivo, questo non è l'approccio che dovresti usare, ma se vuoi provare qualcosa un po 'più veloce prima di tirare fuori zipgrep
questo è un buon approccio.
Da man grep
,
-a, --text Process a binary file as if it were text; this is equivalent to the --binary-files=text option.
Fastjar - molto vecchio, ma adatta alle vostre esigenze. Fastjar contiene uno strumento chiamato jargrep (o grepjar). Utilizzato allo stesso modo di grep:
> locate .jar | grep hibernate | xargs grepjar -n 'objectToSQLString'
org/hibernate/type/EnumType.class:646:objectToSQLString
org/hibernate/sql/Update.class:576:objectToSQLString
org/hibernate/sql/Insert.class:410:objectToSQLString
org/hibernate/usertype/EnhancedUserType.class:22:objectToSQLString
org/hibernate/persister/entity/SingleTableEntityPersister.class:2713:objectToSQLString
org/hibernate/hql/classic/WhereParser.class:1910:objectToSQLString
org/hibernate/hql/ast/tree/JavaConstantNode.class:344:objectToSQLString
org/hibernate/hql/ast/tree/BooleanLiteralNode.class:240:objectToSQLString
org/hibernate/hql/ast/util/LiteralProcessor.class:1363:objectToSQLString
org/hibernate/type/BigIntegerType.class:114:objectToSQLString
org/hibernate/type/ShortType.class:189:objectToSQLString
org/hibernate/type/TimeType.class:307:objectToSQLString
org/hibernate/type/CharacterType.class:210:objectToSQLString
org/hibernate/type/BooleanType.class:180:objectToSQLString
org/hibernate/type/StringType.class:166:objectToSQLString
org/hibernate/type/NumericBooleanType.class:128:objectToSQLString
org/hibernate/type/CustomType.class:543:objectToSQLString
org/hibernate/type/TimeZoneType.class:204:objectToSQLString
org/hibernate/type/DateType.class:343:objectToSQLString
org/hibernate/type/LiteralType.class:18:objectToSQLString
org/hibernate/type/ByteType.class:189:objectToSQLString
org/hibernate/type/LocaleType.class:259:objectToSQLString
org/hibernate/type/CharBooleanType.class:171:objectToSQLString
org/hibernate/type/TimestampType.class:409:objectToSQLString
org/hibernate/type/CurrencyType.class:256:objectToSQLString
org/hibernate/type/AbstractCharArrayType.class:219:objectToSQLString
org/hibernate/type/FloatType.class:177:objectToSQLString
org/hibernate/type/DoubleType.class:173:objectToSQLString
org/hibernate/type/LongType.class:223:objectToSQLString
org/hibernate/type/IntegerType.class:188:objectToSQLString
Utilizzando vaso jfind
JFind riesce a trovare un file di classe Java in qualsiasi punto del file system, anche se è nascosto molti livelli di profondità in un barattolo all'interno di un orecchio all'interno di un zip!
Spero che questo aiuti -> http://www.unix.com/unix-dummies-questions-answers/39683-find-string-jar-file.html considerando il sistema operativo è Linux. in bocca al lupo !! –
stai provando a farlo in fase di esecuzione o come parte del debug di un problema? –
Cosa intendi con "parola chiave"? I file jar sono costituiti da classi java, che contengono identificatori e stringhe (e altri contenuti). Vuoi trovare le classi che definiscono o usano una stringa "INIZIA RICHIESTA"? –