Zum Inhalt springen

Odec

Mitglieder
  • Gesamte Inhalte

    11
  • Benutzer seit

  • Letzter Besuch

Beiträge von Odec

  1. Hi,

    ich hab das Problem das ich die php-java-bridge PHP/Java Bridge

    nicht auf meinem System zum laufen bringen kann.

    ich habe ein tiger howto gefunden:

     1. libtool vs. glibtool
    
    
    The bridge requires GNU libtool version 1.4.3 or higher, which exists on
    
    MacOS 10.4.6 as glibtool. There is ANOTHER utility called libtool on the
    
    Mac, which is NOT the right tool.
    
    
    To solve this issue, make glibtool masquerade as libtool:
    
    
    sudo mv /usr/bin/libtool ~/a.safe.tmp.dir
    
    sudo ln -s  /usr/bin/glibtool /usr/bin/libtool
    
    
    
    This is TEMPORARY; you will need to undo it when we're done (see below).
    
    
    2. PHP
    
    
    For some reason, on my machine, I had two versions of PHP installed at
    
    once: one in /usr/bin/php (php 4) and another in /usr/local/php5/. The
    
    latter is the correct one. If you have both, you need to get rid of php4
    
    and set your PATH variable accordingly.
    
    
    What I did was to move the old php into a harmless directory.
    
    
    Once you've done that, make sure your base PHP install still works, e.g.,
    
    you can do a PHPINFO().
    
    
    3. Extension dir
    
    
    In your php.ini, set your extension_dir variable to a reasonable setting,
    
    e.g. /usr/local/php5/lib. You may already have some extensions installed
    
    so maybe you're already all set. On my machine, it was set to ./ by
    
    default, which doesn't make a lot of sense.
    
    
    4. Follow the installation instructions from the php-java-bridge Web site,
    
    namely, download and extract the tarball, cd to the dir,
    
    
    phpize && ./configure --with-java=$JAVA_HOME && make
    
    sudo sh install.sh
    
    <enter password>
    
    
    Say No to all options presented by install.sh. (This way you separate the
    
    JVM from the Web server as described in the php-java-bridge install docs.)
    
    
    5. Set up php.ini config.
    
    
    This is my config block for the php-java-bridge:
    
    
    extension=java.so
    
    [java]
    
    java.log_level="3"
    
    java.log_file="/var/log/php-java-bridge.log"
    
    
    6. Launch the JVM
    
    
    java -Djava.library.path=/usr/local/php5/lib -Djava.class.path=/usr/local/php5/lib/JavaBridge.jar Djava.awt.headless=true -Dphp.java.bridge.base=/usr/local/php5/lib php.java.bridge.JavaBridge &
    
    
    
    Replace /usr/local/php5/lib with your own extension_dir as set above in
    
    Section 3.
    
    
    7. Hope it worked
    
    
    Copy the test.php file from the tarball directory to a Web accessible
    
    directory. Along with the usual PHPINFO() stuff, you will see a block of
    
    vars for the java extension, and then a bunch of debugging output at the
    
    bottom of the page. You did it!
    
    
    8. Move libtool back
    
    
    sudo rm -i /usr/bin/libtool
    
    sudo mv ~/my.safe.tmp.dir/libtool /usr/bin/libtool
    jedoch scheitere ich bei punkt 6 folgendermaßen: Exception in thread "main" java.lang.NoClassDefFoundError: Djava/awt/headless=true
    
    [1]+  Exit 1  java -Djava.library.path=/usr/local/php5/lib -Djava.class.path=/usr/local/php5/lib/JavaBridge.jar Djava.awt.headless=true -Dphp.java.bridge.base=/usr/local/php5/lib php.java.bridge.JavaBridge
    
    
    ich habe diese Bridge schon häufiger unter Linux-Debian erfolgreich zum laifen bekommen, jedoch scheint auch ohne Punkt 6, die java.so - extension unter Tiger nicht zu funktionieren:
    
    PHP Warning:  PHP Startup: ??!??|?#xB?: Unable to initialize module
    
    Module compiled with module API=20020429, debug=0, thread-safety=0
    
    PHP    compiled with module API=20060613, debug=0, thread-safety=0
    
    These options need to match
    
     in Unknown on line 0
    
    

    Würde mich über Lösungsvorschläge freuen :)

    Danke,

    Odec

  2. danke für deine antwort und sorry das ich so spät erst darauf reagiere.

    habe es auf deine art realisiert bekommen mit:

    new java("java.util.Vector", array(1,2,3)) ^^

    nur das ich selbst drauf gekommen bin durchn artikel in einer php-magazine ausgabe.

    die ganze sache baut auf einer php-applikation auf und meine vorgaben waren es halt somit nur php und java zu verwenden, kein jsp...

    nunja hat ja nun geklappt, vielen dank nochma.

    Gruß

    Odec

  3. Hi, ich komm am besten gleich zur Sache:

    ich habe ein Problem mit der Arrayübergabe als Parameter von PHP zu Java mittls der oben genannten Bridge...

    leider gibt es dazu kaum Infos Zendseitig...

    folgenden Schnippsel konnte ich dem Zend User Guide PDF entnehmen:

    "In PHP, arrays and hashtables are used interchangeably. This is because in PHP

    hashtables are indexed by integers or strings—not by objects. In Java, the key and

    value must be objects to be associated, so primitive types have to be converted to

    objects first, before parsing.

    In Zend Platform’s Java interface, if a method returns Array/Hashtable, it is

    immediately translated into a PHP native array/hashtable type. This means that if you want to work with a Java array/hash from PHP you cannot preserve it as a Java

    object. Of course, the contents are preserved, but the object identity is lost. In such a

    case, when an array/hash is returned, you will lose the ability to use Java methods

    since the array/hash loses the object identity and becomes a regular PHP array.

    To deal with Array/Hashtable objects originating in Java:

    Implement the code dealing with the array in Java and then call it from PHP, or

    encapsulate the object in a different class.

    Note:

    Method names in PHP are not case sensitive. For this reason array/hashtable refers to the

    PHP type, while Array/Hashtable refers to the Java object."

    ich möchte im Grunde nur ein Array mit Strings von PHP zum JAVA-Objekt übergeben.

    jedoch akzeptiert die JAVA-Klasse den Parameter nicht als:

    String arrayname[] , Vector arrayname oder Hashtable arrayame...

    vielleicht mache ich auch in Java irgendetwas grundlegend falsch, jedoch wüsste ich nicht was....

    ich hoffe das mir hier jemand helfen kann,

    Vielen Dank im voraus!

    Odec

    PS:

    Zend PDF: http://www.zend.com/support/user_docs/ZendPlatform/Zend_Platform_User_Guide.pdf

  4. Hi, ich muss für die Berufschule ein Referat über "Border-Layout" halten, da ich jedoch auch generell nicht viel Ahnung von JAVA habe, scheint es sich für mich ein wenig schwer zu gestalten.

    Ich finde auch leider nicht viel über dieses Thema, herausgefunden habe ich das man es auch Layout-Manager nennt, dann habe ich dieses Referat gefunden:

    http://pool1.rz.fhtw-berlin.de/LV_oom_1_ws0304/referate/Layoutmanager-Dateien/frame.htm

    und eine kurze definition:

    BorderLayout verteilt die Dialogelemente nach Vorgabe des Programms auf die vier

    Randbereiche und den Mittelbereich des Fensters.

    kennt jemand vielleicht ne Quelle oder kann mir mehr zum Thema sagen?

    Vielen dank im voraus

    Odec

    //EDIT:

    und das hier noch:

    Border Layout

    Die Klasse BorderLayout definiert einen Layout Manager, der fünf feste Positionen kennt: eine Zentralposition, und jeweils links/rechts und oberhalb/unterhalb der Zentralposition eine Position für Unterkomponenten. Die Methode add kann in diesem Layout auch noch mit einem zweitem Argument aufgerufen werden, das eine dieser fünf Positionen angibt. Hierzu bedient man sich der konstanten Felder der Klasse BorderLayout. In dieser Klasse wird die Klasse BorderLayout zur Steuerung des Layoout benutzt. Die fünf Knöpfe werden an jeweils eine der fünf Positionen hinzugefügt:

    package name.panitz.gui.layoutTest;

    import java.awt.*;

    import javax.swing.*;

    class BorderLayoutTest extends JFrame {

    public BorderLayoutTest(){

    Container pane = getContentPane();

    pane.setLayout(new BorderLayout());

    pane.add(new JButton("eins"),BorderLayout.NORTH);

    pane.add(new JButton("zwei"),BorderLayout.SOUTH);

    pane.add(new JButton("drei (ein langer Knopf)")

    ,BorderLayout.CENTER);

    pane.add(new JButton("vier"),BorderLayout.WEST);

    pane.add(new JButton("fuenf"),BorderLayout.EAST);

    pack();

    setVisible(true);

    }

    public static void main(String [] _){new BorderLayoutTest();}

    }

    Die Klasse erzeugt das folgende Fenster.

    Das Layout ändert sich nicht, wenn man mit der Maus die Größe und das Format des Fensters verändert.

    -------------------------------------------------------------------------------------------------------------------------

    aber ich weiss nicht ob es reicht, das Referat muss mindestens 10minuten gehalten werden + Powerpoint.Präsi

  5. ähm, ja, denke ich hab ein klitzekleines bisschen ahnung davon ^^

    man das sind überladene funktionen deshalb werden sie ja auch über die anzahl der parameter bestimmt, wie ich geschrieben hab wird sie in:

    dTree.prototype.addNode = function(pNode)

    aufgerufen, aber da du dir wahrscheinlich den code nich gezogen hast poste ich ihn jetzt extra für dich:

    /*--------------------------------------------------|
    
    
    | dTree 2.05 | www.destroydrop.com/javascript/tree/ |
    
    
    |---------------------------------------------------|
    
    
    | Copyright (c) 2002-2003 Geir Landrö               |
    
    
    |                                                   |
    
    
    | This script can be used freely as long as all     |
    
    
    | copyright messages are intact.                    |
    
    
    |                                                   |
    
    
    | Updated: 17.04.2003                               |
    
    
    |--------------------------------------------------*/
    
    
    
    
    // Node object
    
    
    function Node(id, pid, name, url, title, target, icon, iconOpen, open) {
    
    
    	this.id = id;
    
    
    	this.pid = pid;
    
    
    	this.name = name;
    
    
    	this.url = url;
    
    
    	this.title = title;
    
    
    	this.target = target;
    
    
    	this.icon = icon;
    
    
    	this.iconOpen = iconOpen;
    
    
    	this._io = open || false;
    
    
    	this._is = false;
    
    
    	this._ls = false;
    
    
    	this._hc = false;
    
    
    	this._ai = 0;
    
    
    	this._p;
    
    
    };
    
    
    
    
    // Tree object
    
    
    function dTree(objName) {
    
    
    	this.config = {
    
    
    		target				: null,
    
    
    		folderLinks			: true,
    
    
    		useSelection		: true,
    
    
    		useCookies			: true,
    
    
    		useLines			: true,
    
    
    		useIcons			: true,
    
    
    		useStatusText		: false,
    
    
    		closeSameLevel		: false,
    
    
    		inOrder				: true
    
    
    	}
    
    
    	this.icon = {
    
    
    		root				: 'img/schloss.jpeg',
    
    
    		folder				: 'img/right.png',
    
    		//folder			: 'img/close.jpeg',
    
    
    		folderOpen			: 'img/down.png',
    
    		//folderOpen		: 'img/open.jpeg',
    
    
    		node				: '',
    
    		//node				: 'img/page.gif',
    
    
    		empty				: 'img/empty.gif',
    
    
    		line				: 'img/line.gif',
    
    
    		join				: 'img/join.gif',
    
    
    		joinBottom			: 'img/joinbottom.gif',
    
    
    		plus				: 'img/plus.gif',
    
    
    		plusBottom			: 'img/plusbottom.gif',
    
    
    		minus				: 'img/minus.gif',
    
    
    		minusBottom			: 'img/minusbottom.gif',
    
    
    		nlPlus				: 'img/nolines_plus.gif',
    
    
    		nlMinus				: 'img/nolines_minus.gif'
    
    
    	};
    
    
    	this.obj = objName;
    
    
    	this.aNodes = [];
    
    
    	this.aIndent = [];
    
    
    	this.root = new Node(-1);
    
    
    	this.selectedNode = null;
    
    
    	this.selectedFound = false;
    
    
    	this.completed = false;
    
    
    };
    
    
    
    
    // Adds a new node to the node array
    
    
    dTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {
    
    
    	this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);
    
    
    };
    
    
    
    
    // Open/close all nodes
    
    
    dTree.prototype.openAll = function() {
    
    
    	this.oAll(true);
    
    
    };
    
    
    dTree.prototype.closeAll = function() {
    
    
    	this.oAll(false);
    
    
    };
    
    
    
    
    // Outputs the tree to the page
    
    
    dTree.prototype.toString = function() {
    
    
    	var str = '<div class="dtree">\n';
    
    
    	if (document.getElementById) {
    
    
    		if (this.config.useCookies) this.selectedNode = this.getSelected();
    
    
    		str += this.addNode(this.root);
    
    
    	} else str += 'Browser not supported.';
    
    
    	str += '</div>';
    
    
    	if (!this.selectedFound) this.selectedNode = null;
    
    
    	this.completed = true;
    
    
    	return str;
    
    
    };
    
    
    
    
    // Creates the tree structure
    
    
    dTree.prototype.addNode = function(pNode) {
    
    
    	var str = '';
    
    
    	var n=0;
    
    
    	if (this.config.inOrder) n = pNode._ai;
    
    
    	for (n; n<this.aNodes.length; n++) {
    
    
    		if (this.aNodes[n].pid == pNode.id) {
    
    
    			var cn = this.aNodes[n];
    
    
    			cn._p = pNode;
    
    
    			cn._ai = n;
    
    
    			this.setCS(cn);
    
    
    			if (!cn.target && this.config.target) cn.target = this.config.target;
    
    
    			if (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);
    
    
    			if (!this.config.folderLinks && cn._hc) cn.url = null;
    
    
    			if (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {
    
    
    					cn._is = true;
    
    
    					this.selectedNode = n;
    
    
    					this.selectedFound = true;
    
    
    			}
    
    
     //////// HIER MÜSSTE DER TITLE ALS DRITTER PARAMETER ÜBERGEBEN WERDEN
    
    			str += this.node(cn, n);
    
    
    			if (cn._ls) break;
    
    
    		}
    
    
    	}
    
    
    	return str;
    
    
    };
    
    
    
    
    // Creates the node icon, url and text
    
    
    
    
    //////// HIER SOLL DER TITLE ERHALTEN WERDEN !!! //////////////////////
    
    dTree.prototype.node = function(node, nodeId) {
    
    	//alert(title);
    
    	var str = '<div class="dTreeNode">' + this.indent(node, nodeId);
    
    
    	if (this.config.useIcons) {
    
    
    		if (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);
    
    
    		if (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;
    
    
    		if (this.root.id == node.pid) {
    
    
    			node.icon = this.icon.root;
    
    
    			node.iconOpen = this.icon.root;
    
    
    		}
    
    
    		str += '<img id="i' + this.obj + nodeId + '" src="' + ((node._io) ? node.iconOpen : node.icon) + '" alt="" /><td valign=middle>
    
    
    
    <input type=checkbox id="'+title+'" onclick = alert('+title+')></td>';
    
    
    	}
    
    
    	if (node.url) {
    
    
    		str += '<a id="s' + this.obj + nodeId + '" class="' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '" href="' + node.url + '"';
    
    
    		if (node.title) str += ' title="' + node.title + '"';
    
    
    		if (node.target) str += ' target="' + node.target + '"';
    
    
    		if (this.config.useStatusText) str += ' onmouseover="window.status=\'' + node.name + '\';return true;" onmouseout="window.status=\'\';return true;" ';
    
    
    		if (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))
    
    
    			str += ' onclick="javascript: ' + this.obj + '.s(' + nodeId + ');"';
    
    
    		str += '>';
    
    
    	}
    
    
    	else if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)
    
    
    		str += '<a href="javascript: ' + this.obj + '.o(' + nodeId + ');" class="node">';
    
    
    	str += node.name;
    
    
    	if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';
    
    
    	str += '</div>';
    
    
    	if (node._hc) {
    
    
    		str += '<div id="d' + this.obj + nodeId + '" class="clip" style="display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';">';
    
    
    		str += this.addNode(node);
    
    
    		str += '</div>';
    
    
    	}
    
    
    	this.aIndent.pop();
    
    
    	return str;
    
    
    };
    
    };

    vielleicht kommen jetzt weniger fragen ^^

    Odec

  6. danke schonma für reaktionen,

    also ich rufe in rekursiven php-funktionen dynamisch die add-funktion von js auf, dort übergebe ich id,parentid,namen, url und title

    diese werden ja normal als parameter der addfunktion übergeben, jedoch blicke ich nich so ganz durch den code durch, ich will den title ja im endeffekt nur als parameter an die js-interne:

    dTree.prototype.node = function(node, nodeId, title <--)

    übergeben, jedoch geht das vorher durch:

    dTree.prototype.addNode = function(pNode)

    und davor:

    dTree.prototype.toString = function()

    das problem is , ich kann den code da nich ganz nachvollziehen...

    danke, Odec

  7. hi zusammen,

    ich baue grad nen dynamischen baum, der seine inhalte aus ner mysql-db zieht.

    das problem:

    ich möchte an jedes element ne checkbox mit nem wert haben, den ich aus php übergebe, jedoch hab ich nicht soviel js-erfahrung um das zu bewerkstelligen...

    // Creates the node icon, url and text
    
    
    dTree.prototype.node = function(node, nodeId, title) {
    
    	//alert(title);
    
    	var str = '<div class="dTreeNode">' + this.indent(node, nodeId);
    
    
    	if (this.config.useIcons) {
    
    
    		if (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);
    
    
    		if (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;
    
    
    		if (this.root.id == node.pid) {
    
    
    			node.icon = this.icon.root;
    
    
    			node.iconOpen = this.icon.root;
    
    
    		}
    
    
    		str += '<img id="i' + this.obj + nodeId + '" src="' + ((node._io) ? node.iconOpen : node.icon) + '" alt="" /><td valign=middle><input type=checkbox id="'+title+'" onclick = alert('+title+')></td>';

    also der hier geschriebene "title" is der wert den ich übergeben will.

    also falls mal ein js-bewanderter von euch zeit hat wär ich sehr dankbar, das gesamte grundskript ist hier zu finden:

    http://www.destroydrop.com/javascripts/tree/dtree.zip

    denke es werden fragen aufkommen :)

    vielen dank schonma

    Odec

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...