WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Library compiler Java

 

gamma
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2017, 10:32     Titel: Library compiler Java
  Antworten mit Zitat      
Hallo....
Ich habe mit Hilfe der App Library compiler ein Matlab scribt in eine Java Datei umgewandelt. Ich bekomme nun 3 Ordner. Wenn ich in den Ordner for_testing gehe finde ich mein Programm Test2.jar. Mein Problem ist jetzt das ich dieses aber nicht öffnen kann. Weder in der Bash noch wenn ich darauf klicke. Ich bekomme keine Fehlermeldung oder sonstiges. Es reagiert einfach nicht. Ich habe jetzt versucht eine Textdatei.bat mit den Inhalt java -jar und den Programmnamen zu erstellen und somit zu öffnen und bekomme die Fehlermeldung: kein Hauptmanifestattribut, in Test2.jar. Hab die Meldung gegoogelt und offensichtlich fehlt die Main-Class.
Hat jemand damit Erfahrung und kann mir weiterhelfen? Fange mit dem Begriff Main-Class nicht viel an.
Danke schon mal für die Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.05.2017, 15:20     Titel:
  Antworten mit Zitat      
Hallo,

man muss dann auch noch den Java-Code schreiben, der die Funktionen in dem .jar aufruft. Siehe z.B. hier, Schritte 14 und 15
https://www.mathworks.com/help/comp.....ion-with-matlab-code.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gamma
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 11:28     Titel:
  Antworten mit Zitat      
Danke für die Hilfe! Das bringt mich schon mal weiter! Ich bekomme beim kompelieren allerdings eine Fehlermeldung mit der ich leider nicht viel anzufangen weiß:
Code:
.\getmagic.java:1: error: package com.mathworks.toolbox.javabuilder does not exist
import com.mathworks.toolbox.javabuilder.*;
^
.\getmagic.java:2: error: package makesqr does not exist
import makesqr.*;
^
error: Class names, 'makesqr.jar', are only accepted if annotation processing is explicitly requested
.\getmagic.java:8: error: cannot find symbol
      MWNumericArray n = null;
      ^
  symbol:   class MWNumericArray
  location: class getmagic
.\getmagic.java:10: error: cannot find symbol
      Class1 theMagic = null;
      ^
  symbol:   class Class1
  location: class getmagic
.\getmagic.java:20: error: cannot find symbol
         n = new MWNumericArray(Double.valueOf(args[0]),
                 ^
  symbol:   class MWNumericArray
  location: class getmagic
.\getmagic.java:21: error: cannot find symbol
                                      MWClassID.DOUBLE);
                                      ^
  symbol:   variable MWClassID
  location: class getmagic
.\getmagic.java:23: error: cannot find symbol
         theMagic = new Class1();
                        ^
  symbol:   class Class1
  location: class getmagic
.\getmagic.java:34: error: cannot find symbol
         MWArray.disposeArray(n);
         ^
  symbol:   variable MWArray
  location: class getmagic
.\getmagic.java:35: error: cannot find symbol
         MWArray.disposeArray(result);
         ^
  symbol:   variable MWArray
  location: class getmagic
10 errors

Ich bin genauso vorgegangen wie in dem von dir geteilten Link. Ich habe einzig und allein meinen Ordener mit der Java Datei am Desktop verschoben. Hast du dafür eine Lösung?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2017, 12:57     Titel:
  Antworten mit Zitat      
Hallo,

und wie kompilierst du? (Schritt 16, da ist vor allem der classpath-Teil wichtig)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gamma
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 14:18     Titel:
  Antworten mit Zitat      
Eigentlich so wie es beschrieben steht. Meine Pfad ist allerdings ein anderer weil ich keinen mcrroot Ordner habe. Ich habe allerdings den Pfad zu meinen javabuilder.jar angegeben!
Ich bekomme dann folgende Fehlermeldung:
Code:
javac -classpath "C:\Program Files\MATLAB\R2016b\toolbox\javabuilder\jar":.\makesqr.jar .\getmagic.java
.\getmagic.java:1: error: package com.mathworks.toolbox.javabuilder does not exist
import com.mathworks.toolbox.javabuilder.*;
^
.\getmagic.java:2: error: package makesqr does not exist
import makesqr.*;
^
.\getmagic.java:8: error: cannot find symbol
      MWNumericArray n = null;
      ^
  symbol:   class MWNumericArray
  location: class getmagic
.\getmagic.java:10: error: cannot find symbol
      Class1 theMagic = null;
      ^
  symbol:   class Class1
  location: class getmagic
.\getmagic.java:20: error: cannot find symbol
         n = new MWNumericArray(Double.valueOf(args[0]),
                 ^
  symbol:   class MWNumericArray
  location: class getmagic
.\getmagic.java:21: error: cannot find symbol
                                      MWClassID.DOUBLE);
                                      ^
  symbol:   variable MWClassID
  location: class getmagic
.\getmagic.java:23: error: cannot find symbol
         theMagic = new Class1();
                        ^
  symbol:   class Class1
  location: class getmagic
.\getmagic.java:34: error: cannot find symbol
         MWArray.disposeArray(n);
         ^
  symbol:   variable MWArray
  location: class getmagic
.\getmagic.java:35: error: cannot find symbol
         MWArray.disposeArray(result);
         ^
  symbol:   variable MWArray
  location: class getmagic
9 errors

was immerhin nur noch 9 errors statt 10 beinhaltet. Weißt du was ich noch versuchen könnte? Und danke für die Hilfe!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2017, 14:27     Titel:
  Antworten mit Zitat      
Hallo,

ich würde darauf achten, möglichst nah an der Doku zu bleiben. Der entscheidende Teil ist
Zitat:
\javabuilder.jar";

Du hörst im Pfad bei \jar auf und verwendest : statt ; als Trennzeichen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gamma
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 14:53     Titel:
  Antworten mit Zitat      
Ich habe ein Semikolon mit einen Doppelpunkt vertauscht und jetzt lässt es sich tatsächlich kompelieren! Danke einmal dafür! Das einzige Problem was ich jetzt noch habe ist, dass wenn ich es wie in Schritt 17 ausführen möchte die Fehlermeldung:
Zitat:
java -classpath.;"C:\Program Files\MATLAB\MATLAB Runtime\v91\toolbox\javabuilder\jar\javabuilder.jar";.\makesqr.jar getmagic 5
Unrecognized option: -classpath.;C:\Program Files\MATLAB\MATLAB Runtime\v91\toolbox\javabuilder\jar\javabuilder.jar;.\makesqr.jar
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
kommt. Der einzige Unterschied bei mir ist, dass ich in MATLAB Runtime und nicht compiler Runtime bin. Außerdem finde ich dort den Ordner v91 und nicht v82 aber ich denke das liegt an der Version oder irre ich mich da?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2017, 15:04     Titel:
  Antworten mit Zitat      
Hallo,

da fehlt ein Leerzeichen zwischen classpath und .

Die Bedeutung der 5 am Ende des Befehls ist mir nicht klar. Im Zweifelsfall mal ohne diese versuchen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gamma
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 15:09     Titel:
  Antworten mit Zitat      
Es funktioniert tatsächlich! Da wäre ich jetzt lange nicht drauf gekommen!! Danke danke danke!!! Du hast mir wirklich extrem weiter geholfen! Ich nehme an mit anderen Matlab Funktionen geht das genauso?
Danke nochmals!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2017, 15:14     Titel:
  Antworten mit Zitat      
Hallo,

prinzipiell ja. Du musst halt darauf achten, dass der Java-Code deine Funktion mit sinnvollen Argumenten füttert und die Ergebnisse dann sinnvoll weiterverarbeitet werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gamma
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 15:18     Titel:
  Antworten mit Zitat      
Eine Frage hätte ich allerdings noch:
Bei Punkt 15 kopiere ich einen Text und öffnen ihn anschließend mit den Editor. Bleibt der Text bei anderen Funktionen gleich? Bis auf den Namen meines Matlab Programms natürlich also zum Beispiel getmagic.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2017, 15:37     Titel:
  Antworten mit Zitat      
Hallo,

ja, du brauchst nur den Namen des .jar (hier war es makesqr) und des .java zu ändern. Entsprechend in Schritt 16.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gamma
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 15:40     Titel:
  Antworten mit Zitat      
Dann danke für die Hilfe! Werde ich gleich ausprobieren!
Private Nachricht senden Benutzer-Profile anzeigen
 
gamma
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.05.2017, 22:05     Titel:
  Antworten mit Zitat      
Tut mir leid das ich das Thema welches eigentlich schon abgehackt war nochmals anspreche aber ich habe nun eine spezielle Funktion bei der ich nun etwas Hilfe bräuchte.
Code:
function [F,C]=factorImage3(d_pp,matrix,nf,ni)



%name='/Users/Peter/archive/speichel.dcm';
%info=dicominfo(name);



%d_pp=dicomread(h);
%--------------------------------------------------------------------------
is=matrix;                                                        % image size
np=is*is;                                                % number of pixels
%--------------------------------------------------------------------------
% convert images to vectors
v=zeros(np,1);
d=zeros(np,ni);
for i=1:ni
    v(:)=d_pp(:,:,:,i);
    d(:,i)=v;
end
clear d_pp h
%--------------------------------------------------------------------------
% PRINCIPAL COMPONENT ANALYSIS - for variants and details cf Matlab help
%[coeff,score,latent]=pca(zscore(d));
%[coeff,score,latent]=pca(d);
%[coeff,score]=princomp(zscore(d));
[cf,P]=princomp(d); %(:,4:13));
%--------------------------------------------------------------------------
%[fc,~,~,~,F]=factoran(d,nf,'rotate','varimax','scores','wls','maxit',5000);
[fc,~,~,~,F]=factoran(d,nf,'rotate','varimax','scores','wls','maxit',7000);

% rotate - for details cf Matlab help
%   none
%   equamax
%   orthomax
%   parsimax
%   pattern
%   procrustes
%   promax
%   quartimax
%   varimax
% scores - for details cf Matlab help
%   wls or Bartlett
%   regression or Thomson
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------
% extraction of factor curves
m=max(F);

for i=1:nf
    F(:,i)=F(:,i)/m(i);
end

%C=d(:,4:13)'*F/(F'*F);

C=d'*F/(F'*F);
%--------------------------------------------------------------------------
%figure                                                           % figure 3

a=zeros(is);


for i=1:nf
    %a(:)=F(:,i);
   
end
for i=(nf+1):2*nf
    %subplot(2,nf,i);
    %plot(C(:,i-nf),'o-');
    %grid on
    %set(gca,'XLim',[0,11],'YLim',[0,35]);
    %ts=['FACTOR CURVE ',int2str(i-2)];
    %title(ts,'FontSize',12);
end
%--------------------------------------------------------------------------

end

Geschrieben hab das Programm nicht ich aber mir wurde die Aufgabe zugeteilt es in einen Java code zu verpacken. Es lässt sich auch kompelieren nur ich bekomme beim ausführen die Fehlermeldung
Zitat:
java -classpath .;"C:\Program Files\MATLAB\MATLAB Runtime\v91\toolbox\javabuilder\jar\javabuilder.jar";.\facorImage3.jar getmagic 5
Exception in thread "main" java.lang.NoClassDefFoundError: factorImage3/Class1
at getmagic.main(getmagic.java:36)
Ich nehme an das es daran liegt, dass als input in die Funktion unter anderem eine Matrix verlangt wird und ich überhaupt nur einen Wert eingebe. Wie kann ich in die Kommandozeile aber eine Matrix eingeben und ist für dich ersichtlich was alles an input Werten verlangt wird?
Danke schon mal im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.05.2017, 22:22     Titel:
  Antworten mit Zitat      
Hallo,

wenn jemand eine Funktion weitergibt, sollte er sie immer sauber dokumentieren - zumindest die Ein- und Ausgabeargumente.

Bevor man einen Aufruf einer MATLAB-Funktion aus Java bewerkstelligen kann, muss man wissen, wie die Funktion aus MATLAB heraus aufgerufen werden soll. Das ist zumindest mir hier absolut nicht klar.

Für weitere Unterstützung bitte dann auch den zugehörigen Java-Code posten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.